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();
	}

}
时间: 2024-10-24 12:16:07

HttpClient的get和post请求处理的相关文章

httpclient 实现文件上传中转

开发功能: web前端提交上传文件 -> a服务器接收 -> 转发到b服务器进行文件处理 下面是简单实现的代码,具体细节优化根本自己的需求更改. public String handleResponse(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException { String method = request.getMethod(); S

HttpUrlconnection 、Httpclient get 、post 请求核心代码

HttpURLConnection的使用 /* * URL请求的类别分为二类,GET与POST请求.二者的区别在于: * a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, * b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内. */ // url对象表示的是一个指定的资源 URL url = new URL("http://localhost:8080/TestHttpURLConnectionPr

07_android入门_采用HttpClient的POST方式、GET方式分别实现登陆案例

1.简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议. 2.功能介绍 以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页. (1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等) (2)支持自动转向 (3)支持 HTTPS 协议 (4)支持代理服务器等 3

07_android入门_採用HttpClient的POST方式、GET方式分别实现登陆案例

1.简单介绍 HttpClient 是 Apache Jakarta Common 下的子项目,能够用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,而且它支持 HTTP 协议最新的版本号和建议. 2.功能介绍 ? ? 下面列出的是 HttpClient 提供的基本的功能,要知道很多其它具体的功能能够參见 HttpClient 的主页. (1)实现了全部 HTTP 的方法(GET,POST,PUT,HEAD 等) (2)支持自己主动转向 (3)支持 HTTPS 协议 (4

.Net Standard HttpClient封装Htt请求常用操作整理

一.常用Http操作 1.Get请求,有参数,无参数 2.Post 请求,有参数,无参数 3.文件简单下载 /// <summary> /// http协议请求方法封装 /// </summary> public class NetHelper { #region Get请求 /// <summary> /// get请求,无参 /// </summary> /// <param name="url"></param&g

Feign、httpclient、OkHttp3 结合使用

疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 疯狂创客圈 正在进行分布式和高并发基础原理 的研习,比如下面的一些基础性的内容: 一.Netty Redis 亿级流量 高并发 实战 二.高并发 springcloud + zookeeper 秒杀 以及有关Springcloud 几篇核心.重要的文章: 一.Springcloud 配置, 史上最全 一文全懂 二.Feign Ribbon Hystrix 三者关系 , 史上最全 深度解析 三.SpringCloud

.Net core webapi使用httpClient发送异步请求遇到TaskCanceledException: A task was canceled

前言:本人最近较多使用.net core的项目,最近在使用httpClient发送请求的时候,遇到服务器处理时间较长时,就老是会报异常:TaskCanceledException: A task was canceled.   我的使用异步请求的方法也较为老套,使用的Task a=()=>{};   a.Wait();  来等待异步操作的结束,这种方式执行等待时,就常会出现上面的异常信息,在.net Core中httpClient添加配置超时时长也没用: services.AddHttpClie

用gson和httpclient调用微信公众平台API

吐槽:微信api很无语,部分用xml,部分用json. 最近在找如何调用微信公众平台关于json相关的api比较方便,最后发现httpcliect和gson不错.如果你有更好的方式,请告诉我. 以下代码先了解如何使用gson和httpclient,有功夫再整到我的sophia里 import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.

HttpClient使用详解 (一)

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是Apache Jakarta Common下的子项目,用