httpclient4.0的简单使用(1)马上去偷网页吧~

aimsam 2012-08-30 07:19:06
最近需要用到httpclient做一些模拟登陆什么的..本文不涉及到验证码下载的处理..(因为我没用到…)

首先是下载地址

http://disk.idealweb.cn/disk/f/213_20120830185357_2173_httpcomponents-client-4.2.1-bin.tar.gz
ps:推荐一下上面自己做的网盘,不需要任何注册直接上传,可以外链..哈哈~disk.idealweb.cn

引入改引入的包.

主要的两种获取页面的方式.get post直接贴代码.
关键的都有注释..
真的很简单了,再配合上httpwatch和正则理论上大多数页面的数据都可以轻松抓取了
刷个链接..博客的地址...
http://www.wuliaoji.com/httpclient4-0%E7%9A%84%E7%AE%80%E5%8D%95%E4%BD%BF%E7%94%A8.html



package com.bms.core;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import com.bms.util.CommonUtil;

public class Test2 {

/**
* @param args
* @throws IOException
* @throws ClientProtocolException
*/
public static void main(String[] args) throws ClientProtocolException, IOException {
DefaultHttpClient httpclient = new DefaultHttpClient();

HttpGet httpGet = new HttpGet("http://www.baidu.com");
String body = "";
HttpResponse response;
HttpEntity entity;
response = httpclient.execute(httpGet);
entity = response.getEntity();
body = EntityUtils.toString(entity);//这个就是页面源码了
httpGet.abort();//中断请求,接下来可以开始另一段请求
System.out.println(body);
//httpGet.releaseConnection();//释放请求.如果释放了相当于要清空session
//以下是post方法
HttpPost httpPost = new HttpPost("http://www.baidu.com");//一定要改成可以提交的地址,这里用百度代替
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("name", "1"));//名值对
nvps.add(new BasicNameValuePair("account", "xxxx"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
response = httpclient.execute(httpPost);
entity = response.getEntity();
body = EntityUtils.toString(entity);
System.out.println("Login form get: " + response.getStatusLine());//这个可以打印状态
httpPost.abort();
System.out.println(body);
httpPost.releaseConnection();
}

}



可能会有..httpclient4.0的简单使用(2)...
...全文
596 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chayahua767 2012-08-30
  • 打赏
  • 举报
回复
学习,感谢楼主分享
  • 打赏
  • 举报
回复
这段代码的应用价值不是很高。

对于 HTTP 请求设置连接超时时间和请求超时时间是很有必要的
scbb 2012-08-30
  • 打赏
  • 举报
回复
可惜有些网页部分是由js生成的。 HC就取不到了。
cscript 2012-08-30
  • 打赏
  • 举报
回复
原来是科普 + AD
发帖
Web 开发

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
加入社区
帖子事件
创建了帖子
2012-08-30 07:19
社区公告
暂无公告