欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HttpClient 4.3学习笔记

程序员文章站 2024-03-21 22:57:52
...
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