HttpClient的get和post请求处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpClient的get和post请求处理相关的知识,希望对你有一定的参考价值。

package cn.test1;

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.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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;

/**
 * 1.创建HttpClient对象
 * 2.创建请求方法的实例,并指定请求URL,如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象
 * 3.如果需要发送请求参数,可调用HttpGET或HttpPost共同的setParams(HttpParams params)方法来添加请求参数;
 *   对于HttpPost对象而言,也可以调用SetEntity(HttpEntity entity)方法来设置请求参数。
 * 4.调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
 * 5.调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;
 *   调用HttpResponse的getEntity()方法可获取httpEntity()对象,该对象包装了服务器的响应内容。
 *   程序可通过该对象获取服务器的响应内容。
 * 6.释放连接,无论是否执行方法成功,都必须释放连接
 *
 */
public class Test1 {
	public static void main(String[] args) {
		get();
		post();
	}

	private static void post() {
		//1.创建HttpClient对象
		CloseableHttpClient httpClient = HttpClients.createDefault();
		try {
			//创建HttpGet对象
			//此处路径不对哦,瞎写的
			HttpPost httpPost = new HttpPost("http://www.baidu.com/login.action");
			
			//创建参数队列
			List<NameValuePair> params = new ArrayList<NameValuePair>();
			params.add(new BasicNameValuePair("username", "admin"));
			params.add(new BasicNameValuePair("password", "123456"));
			UrlEncodedFormEntity formEntity;
			formEntity = new UrlEncodedFormEntity(params,"utf-8");
			//将参数设置到HttpPost对象中
			httpPost.setEntity(formEntity);
			
			System.out.println("执行请求路径:"+httpPost.getURI());
			//执行get请求
			CloseableHttpResponse response = httpClient.execute(httpPost);
			System.out.println("响应转台"+response.getStatusLine());
			
			//获取响应实体
			HttpEntity entity = response.getEntity();
			if(entity != null){
				InputStream is = entity.getContent();
				String str = convertStreamToString(is);
				System.out.println("响应内容是:"+str);
				httpPost.abort();
				
			}
			
			
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

	private static void get() {
		//1.创建HttpClient对象
		CloseableHttpClient httpClient = HttpClients.createDefault();
		try {
			//创建HttpGet对象
			HttpGet httpGet = new HttpGet("http://www.baidu.com/");
			
			System.out.println("执行请求路径:"+httpGet.getURI());
			//执行get请求
			CloseableHttpResponse response = httpClient.execute(httpGet);
			System.out.println("响应转台"+response.getStatusLine());
			
			//获取响应实体
			HttpEntity entity = response.getEntity();
			if(entity != null){
				InputStream is = entity.getContent();
				String str = convertStreamToString(is);
				System.out.println("响应内容是:"+str);
				httpGet.abort();
				
			}
			
			
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private static String convertStreamToString(InputStream is) {
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		StringBuilder sb = new StringBuilder();
		String line = null;
		try {
			while((line = reader.readLine()) != null){
				sb.append(line+"\r\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}
	
	

}


本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1876229

以上是关于HttpClient的get和post请求处理的主要内容,如果未能解决你的问题,请参考以下文章

Java学习心得之 HttpClient的GET和POST请求

HttpClient的post请求和get请求

HttpClient GET和POST请求

HttpClient和AsynchttpClient的get与post请求方式

HttpClient的GET请求(post)请求

HttpClient 4.5.3( get和post请求)