HttpClient发起post、get请求

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

参考文章:

http://blog.csdn.net/wangpeng047/article/details/19624529

http://blog.csdn.net/zknxx/article/details/51598852

一、所需jar包

HttpClient 是apache 组织下面的一个用于处理HTTP 请求和响应的开源工具。所需jar包:

commons-logging-1.1.1.jar、httpclient-4.5.2.jar、httpcore-4.4.4.jar

二、使用方法

使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。

1. 创建HttpClient对象。

2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)【过时,不推荐使用】方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。对于HttpGet对象,可通过拼接url来添加请求参数。

4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;

调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

6. 释放连接。无论执行方法是否成功,都必须释放连接

三、示例

package com.learn.http;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
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;
import org.apache.http.util.EntityUtils;

public class HttpSend {

	public static void main(String[] args) {
		// post请求百度地址,返回404
		new HttpSend().post("http://www.baidu.com");
		new HttpSend().get("http://www.baidu.com");
	}

	/**
	 * 发送 post请求访问本地应用并根据传递参数不同返回不同结果
	 */
	public void post(String url) {

		// 创建默认的httpClient实例.
		CloseableHttpClient httpclient = HttpClients.createDefault();
		// 创建httppost
		HttpPost httppost = new HttpPost(url);
		
		// 创建参数队列
		List<NameValuePair> formparams = new ArrayList<NameValuePair>();
		// 添加参数
		// formparams.add(new BasicNameValuePair("gg", "1"));

		UrlEncodedFormEntity uefEntity;
		try {
			//传入空参数,创建实体对象
			uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
			//设置post对象的实体对象
			httppost.setEntity(uefEntity);
			System.out.println("executing post request " + httppost.getURI());
			//执行post请求
			CloseableHttpResponse response = httpclient.execute(httppost);
			try {
				//获取请求结果对象
				HttpEntity entity = response.getEntity();
				if (entity != null) {
					System.out.println("--------------------------------------");
					System.out.println("Response content: " + EntityUtils.toString(entity));
					System.out.println("--------------------------------------");
				}
			} finally {
				response.close();
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 关闭连接,释放资源
			try {
				httpclient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 发送 get请求
	 */
	public void get(String url) {

		// 创建默认的httpClient实例.
		CloseableHttpClient httpclient = HttpClients.createDefault();
		
		try {
			// 封装请求参数
			List<NameValuePair> params = new ArrayList<>();
			params.add(new BasicNameValuePair("cityEname", "henan"));
			//转换为键值对
			String str = EntityUtils.toString(new UrlEncodedFormEntity(params, "UTF-8"));
			System.out.println(str);
			//创建带参数get请求(示例)
			HttpGet httpGet = new HttpGet(url+"?"+str);

			// 创建不带参数get请求
			HttpGet httpget = new HttpGet(url);
			System.out.println("executing get request " + httpget.getURI());
			// 执行get请求.
			CloseableHttpResponse response = httpclient.execute(httpget);
			try {
				// 获取响应实体
				HttpEntity entity = response.getEntity();
				System.out.println("--------------------------------------");
				// 打印响应状态
				System.out.println(response.getStatusLine());
				if (entity != null) {
					// 打印响应内容长度
					System.out.println("Response content length: " + entity.getContentLength());
					// 打印响应内容
					System.out.println("Response content: " + EntityUtils.toString(entity));
				}
				System.out.println("------------------------------------");
			} finally {
				response.close();
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 关闭连接,释放资源
			try {
				httpclient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}



HttpPost设置param参数方法 在HTTP POST请求中,参数可以通过几种不同的方式传递,具体取决于服务器端的接收方式。 阅读详情

相关推荐

SpringBoot项目里,用Apache HttpClient 4.5.6发起GET/POST请求的保姆级教程

本文详细介绍了在SpringBoot项目中使用Apache HttpClient 4.5.6发起GET/POST请求的完整指南,包括基础配置、连接池管理、超时控制、异常处理等生产级特性。通过实战代码示例,帮助开发者快速掌握HTTP客户端的高效使用方法,提升微服务间通信的稳定性和性能。

weixin_30444105的博客 314

Java HttpURLConnection post set params 设置请求参数的三种方法 实践总结

/** * the first way to set params * OutputStream */ byte[] bytesParams = paramsStr.getBytes(); // 发送请求params参数 ...

Keep Learning , Keep Improving ! 1万+

Http协议及getpost请求

https://www.cnblogs.com/qdhxhz/p/8468913.htmlhttps://blog.csdn.net/a360316515/article/details/77272128https://www.cnblogs.com/Garnett-Boy/p/8251561.htmlHTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,...

wenxustqiang 1627

HttpGet &&HttpPost方法发送header,params, Content

public static JSONObject post(String url,JSONObject json,Map headers){ HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); JSONObject response =

8万+

HttpClientpost请求http、https示例

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可: 创建CloseableHttpClient对象。 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创...

星期八的博客 916

android下使用HttpClient发起getpost请求

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。android的sdk中已经附带了HttpClient,下面我们来看一下,如何使用HttpClient发起GETPOST请求GET请求

u013774512的博客 399

httpclient工具类发起get,post,put,delete请求

package com.fh.util; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.NameValuePair; import org.apache.h...

weixin_44452779的博客 826

Java爬虫入门(一)使用HttpClient发起GetPost请求

掘金原文 传送门 本文参考Java 爬虫学习(一)关于 HttpClient 发起 GetPost 请求(想要了解其详细的 可点击此处) 使用HtttpClient模拟客户端爬取网页数据,总的来说,无非就是三个大步骤: 创建HttClient对象(模拟客户端)和设置URI地址 发起请求,获取响应(服务器的反应) 解析消息的内容(头部,实体等) 依据Maven管理的一个项目结构 log4...

欢迎来到我的博客站点 955

HttpClient 发起 GET POST 请求

转载自:https://www.jianshu.com/p/375be5929bed 简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。 HttpClient最新版本是HttpClient 4.5.3 (GA)。 官方下载:http://hc.apach...

lizhengyu891231的博客 385

使用HttpClient发起postget请求例程

在上一篇博客已经详细介绍过了关于http协议的相关内容,本篇给出postget请求的代码样例。 需要导入的类有这些: import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.cl...

meibenxiang的博客 469

HttpClient发起GET / POST请求

在工作线程中进行此操作:GET请求:public String loginOfGet(String username, String password) { HttpClient client = null; try { // 定义客户端对象 client = new DefaultHttpClient();

qianyefei25的专栏 363

Java 爬虫学习(一)关于 HttpClient 发起 GetPost 请求

0. 项目配置 jar 包引入,以及日志处理 项目目录结构

assiduous_me的博客 436

Android 实现HttpClient发起GET或者POST请求

GET 方式   //先将参数放入List,再对参数进行URL编码   List params = new LinkedList();   params.add(new BasicNameValuePair("param1", "中国"));   params.add(new BasicNameValuePair("param2", "value2"));

人丑多读书 675

android php http get,Android HttpClient如何使用发起GET或者POST请求

//先将参数放入List,再对参数进行URL编码List params = new LinkedList();params.add(new BasicNameValuePair("param1", "中国"));params.add(new BasicNameValuePair("param2", "value2"));//对参数编码String param = URLEncodedUtils.f...

weixin_31140599的博客 92

java httpclient4.5_Apache HttpClient4.5模拟GETPOST发起HTTP请求

代码案例:packagecom.what21.http.client4_5;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.impl.client.CloseableHttpClient;...

weixin_29091837的博客 147

android使用HttpClient实现post get (+1)

这里只介绍如何使用HttpClient发起GET或者POST请求   GET 方式   Java代码   //先将参数放入List,再对参数进行URL编码   List params = new LinkedList();   params.add(new BasicNameValuePair("param1", "中国"));  

u014702999的专栏 506

Android HttpClient基本使用方法!!--getpost

这里只介绍如何使用HttpClient发起GET或者POST请求   GET 方式   Java代码   //先将参数放入List,再对参数进行URL编码   List params = new LinkedList();   params.add(new BasicNameValuePair("param1", "中国"));  

dylancao的专栏 826

HttpClient发送GetPost请求

package JanGin.httpClient.demo; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.Htt...

monkey_怡宝的博客 649

HttpClient技术

一、HttpClient 1.1、 前台系统访问后台接口的方式 两个系统间如何互相访问?两个tomcat上的项目如何互相访问 采用HttpClient实现跨系统的接口调用。 1.2、 什么是HttpClient [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YJpMBIcJ-1633836336505)(assets/wps81A3.tmp.jpg)] 官网:http://hc.apache.org/index.html 现在也叫:HttpComponents[外链图片转存

Sparks_t 414
上一篇: 如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.” .
下一篇: Tomcat配置Https协议
LittleSkey
博客等级 码龄12年 13粉丝 68原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值