HttpClient 4.3学习笔记

package demo.httpclient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HeaderIterator;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpClientDemo {
    public static void main(String[] args) {	
	CloseableHttpClient httpclient = HttpClients.createDefault();
	HttpGet httpget = new HttpGet("http://www.soso.com");
	CloseableHttpResponse response = null;
		
	// 设置请求和传输超时时间5s,设置cookie策略
	RequestConfig requestconfig = RequestConfig.custom().setSocketTimeout(5000)
	    .setConnectTimeout(5000).setCookieSpec(CookieSpecs.BEST_MATCH).build();
	httpget.setConfig(requestconfig);
		
	System.out.println(httpget.getURI());
	// 打印请求信息
	System.out.println("Executing request " + httpget.getRequestLine());
	System.out.println("------------------------------");
		
	try {
	    response = httpclient.execute(httpget);
			
            System.out.println(response.getStatusLine().toString());
            System.out.println("------------------------------");
			
	    // 头信息
	    HeaderIterator it = response.headerIterator();
	    while(it.hasNext()) {
	        System.out.println(it.next());
	    }
	    System.out.println("------------------------------");
			
	    // 判断访问的状态码
	    int statusCode = response.getStatusLine().getStatusCode();
	    if(statusCode != HttpStatus.SC_OK) {
	        System.err.println("Method failed: " + response.getStatusLine());
	    }
//	    if(statusCode == HttpStatus.SC_OK) {
//		
//	    } else if((statusCode == HttpStatus.SC_MOVED_TEMPORARILY) 
//                  || (statusCode == HttpStatus.SC_MOVED_PERMANENTLY) 
//                  || (statusCode == HttpStatus.SC_SEE_OTHER)
//                  || (statusCode == HttpStatus.SC_TEMPORARY_REDIRECT)) {
//	        //页面重定向代码
//	    }
			
	    HttpEntity entity = response.getEntity();
	    StringBuilder pageBuffer = new StringBuilder();
	    if(entity != null) {
		InputStream in = entity.getContent();
		BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
		String line;
		while((line = br.readLine()) != null) {
		    pageBuffer.append(line);
		    pageBuffer.append("\n");
		}
		System.out.println(pageBuffer.toString());
		in.close();
		br.close();
	    }
			
	    System.out.println("------------------------------");
			
	    HttpPost httpPost = new HttpPost("http://www.weibo.com");
			
	    // 将要POST的数据封包
	    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
	    nvps.add(new BasicNameValuePair("username", "vip"));
	    nvps.add(new BasicNameValuePair("password", "123456"));
	    httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
	    
	    CloseableHttpResponse response1 = httpclient.execute(httpPost);
	    try {
	        HttpEntity entity1 = response1.getEntity();
	        if(entity != null) {
	            System.out.println(EntityUtils.toString(entity1,"UTF-8"));
		}
	        EntityUtils.consume(entity1);
	    } finally {
	        response.close();
	    }
			
	} catch(ClientProtocolException e) {
	    e.printStackTrace();
	} catch(IOException e) {
	    e.printStackTrace();
	} finally {
	    try {
	        response.close();
	        httpclient.close();
	    } catch(IOException e) {
	        e.printStackTrace();
	    }
        }
    }
}



转载于:https://my.oschina.net/Skynil/blog/196908

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值