1),利用httpclient4.× 写一个http的客户端,模拟浏览器请求,
[code]
public void post(List<NameValuePair> payload) throws Exception{
HttpPost post = new HttpPost(uri);
HttpEntity result = null;
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(payload,
charset);
post.setEntity(entity);
if (LOG.isDebugEnabled()) {
LOG.debug("sending:" + payload);
}
HttpResponse response = _httpClient.execute(post);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() != HttpStatus.SC_OK) {
result = response.getEntity();
StringBuilder msg = new StringBuilder();
msg.append("http response with code "
+ statusLine.getStatusCode());
msg.append("\n");
msg.append("post request: " + post.getURI());
msg.append("\n");
msg.append(statusLine.getReasonPhrase());
if (result != null) {
msg.append("\n\n");
msg.append(EntityUtils.toString(result, "UTF-8"));
msg.append("\n\n");
}
throw new UmcException(msg.toString());
}
if (response.getEntity() != null) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
if (line.indexOf("success") < 0)
System.out.println(line);
}
}
} finally {
if (result != null)
try {
EntityUtils.consume(result);
} catch (IOException e) {
}
post.abort();
}
}
[/code]
uri是请求的地址,charset是编码“UTF-8”,List<NameValuePair>就是表单参数集
[code]
ClientConnectionManager ccManager = new ThreadSafeClientConnManager();
HttpClient _httpClient = new DefaultHttpClient(ccManager);
[/code]
2) 采用JDK的HttpConnection构造http客户端,
[code]
发送
HttpURLConnection conn = null;
try {
URL url = new URL(Your_URL);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
conn.setUseCaches(false);
conn.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(
conn.getOutputStream());
StringBuffer sb = new StringBuffer();
addPair(sb, "p1", "p1value");
addPair(sb, "p2", "p2value");
osw.write(sb.substring(0, sb.length() - 1));
osw.flush();
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line = null;
sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
line = sb.toString();
// 处理返回的字符串line
return;
} catch (IOException e) {
// handle e
} finally {
if (conn != null)
conn.disconnect();
}///发送结束
[/code]
addPair方法:
[code]
public static void addPair(StringBuffer sb, String name, String value) {
if (value == null) {
return;
}
sb.append(name);
sb.append("=");
sb.append(value);
sb.append("&");
}
[/code]
[code]
public void post(List<NameValuePair> payload) throws Exception{
HttpPost post = new HttpPost(uri);
HttpEntity result = null;
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(payload,
charset);
post.setEntity(entity);
if (LOG.isDebugEnabled()) {
LOG.debug("sending:" + payload);
}
HttpResponse response = _httpClient.execute(post);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() != HttpStatus.SC_OK) {
result = response.getEntity();
StringBuilder msg = new StringBuilder();
msg.append("http response with code "
+ statusLine.getStatusCode());
msg.append("\n");
msg.append("post request: " + post.getURI());
msg.append("\n");
msg.append(statusLine.getReasonPhrase());
if (result != null) {
msg.append("\n\n");
msg.append(EntityUtils.toString(result, "UTF-8"));
msg.append("\n\n");
}
throw new UmcException(msg.toString());
}
if (response.getEntity() != null) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
if (line.indexOf("success") < 0)
System.out.println(line);
}
}
} finally {
if (result != null)
try {
EntityUtils.consume(result);
} catch (IOException e) {
}
post.abort();
}
}
[/code]
uri是请求的地址,charset是编码“UTF-8”,List<NameValuePair>就是表单参数集
[code]
ClientConnectionManager ccManager = new ThreadSafeClientConnManager();
HttpClient _httpClient = new DefaultHttpClient(ccManager);
[/code]
2) 采用JDK的HttpConnection构造http客户端,
[code]
发送
HttpURLConnection conn = null;
try {
URL url = new URL(Your_URL);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
conn.setUseCaches(false);
conn.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(
conn.getOutputStream());
StringBuffer sb = new StringBuffer();
addPair(sb, "p1", "p1value");
addPair(sb, "p2", "p2value");
osw.write(sb.substring(0, sb.length() - 1));
osw.flush();
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line = null;
sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
line = sb.toString();
// 处理返回的字符串line
return;
} catch (IOException e) {
// handle e
} finally {
if (conn != null)
conn.disconnect();
}///发送结束
[/code]
addPair方法:
[code]
public static void addPair(StringBuffer sb, String name, String value) {
if (value == null) {
return;
}
sb.append(name);
sb.append("=");
sb.append(value);
sb.append("&");
}
[/code]