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

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章