使用httpclient实现get请求(4.X版本的)

     前阵子需要做新浪微博模拟登录的例子。最后终于使用httpclient模拟请求做出来了。现在先简单总结下下怎么使用httpclient的4.x版本来模拟get请求。

      如果你之前用过httpclient,那你可能会知道httpclient3.x和httpclient4.x版本的改动可是非常大的。连定义httpclient的方式都变了。我还真的是比较吃惊。因为这样改变的例子还真少见。

     下面直接贴代码:

package pre.sinalogin;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class httpclientTest {

	public static void main(String[] args) {
		CloseableHttpClient client = HttpClients.createDefault();
		String html = "";
		String url = "https://www.douban.com/group/explore";
		// 依次是代理地址,代理端口号,协议类型。如果你的电脑不需要代理,可以去掉
		HttpHost proxy = new HttpHost("132.121.3.61", 8080, "http");
		RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
		
		HttpGet httpGet = new HttpGet(url);
		httpGet.setConfig(config);
		//设置了headers的参数,如果请求的对这里不要求的话,可以省略。
		Map headers = new HashMap();
		//headers.put("Cookie", cookie);
		headers.put("Accept", "*/*");
		headers.put("Accept-Encoding", "gzip, deflate, sdch");
		headers.put("Accept-Language", "zh-CN,zh;q=0.8");
		for (Map.Entry m : headers.entrySet()) {
			System.out.println(m.getKey() + "\t" + m.getValue());
			httpGet.setHeader(m.getKey(), m.getValue());
		}
		CloseableHttpResponse response = null;
		try {
			response = client.execute(httpGet);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		HttpEntity httpEntity = response.getEntity();
		if (httpEntity != null) {
			// 打印响应内容
			try {
				html = EntityUtils.toString(httpEntity, "UTF-8");
				client.close();
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		System.out.print(html);
	}

}
如果有什么疑问,欢迎留言讨论



猜你喜欢

转载自blog.csdn.net/u010102390/article/details/69948650