用Java模拟Http请求

1 篇文章 0 订阅
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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值