天天看點

使用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);
	}

}

      
     
    
           

如果有什麼疑問,歡迎留言讨論