首页IT科技HttpClient基本使用

HttpClient基本使用

时间2025-04-30 19:40:47分类IT科技浏览4432
导读:HttpClient 一、初识HttpClient...

HttpClient

一           、初识HttpClient

HttpClient 是Apache Jakarta Common 下的子项目            ,可以用来提供高效的                  、最新的      、功能丰富的支持 HTTP 协议的客户端编程工具包                 ,并且它支持 HTTP 协议最新的版本和建议            。

----百度百科

就是用来发送http请求或者解析http响应的                 。

二           、HttpClient请求

当然在使用之前      ,需要导包      ,使用maven(不使用maven就要自己取下jar包                 ,apache官网就有):

<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>

包导入之后            ,一般分为六步:

创建HttpClient实例 创建某种连接方法的实例 调用HttpClient实例的execute方法来执行请求方法 读取response 释放连接      ,无论执行方法是否成功

2.1 GET请求

我们先以GET请求为例

创建HttpClient实例

CloseableHttpClient httpClient = HttpClients.createDefault();

创建GET请求方法实例

HttpGet httpGet = new HttpGet("http://httpbin.org/get");

调用HttpClient实例执行GET实例                 ,返回response

CloseableHttpResponse response = httpClient.execute(httpGet);

解析response

// 获取状态码 int status = response.getStatusLine().getStatusCode(); // 获取实例 HttpEntity entity = response.getEntity(); // 获取html String html = EntityUtils.toString(entity);

释放连接

response.close(); httpClient.close();

完整代码:

package vip.yangsf; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DecompressingHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.w3c.dom.Document; import sun.plugin.dom.html.HTMLDocument; import java.io.IOException; public class GetTest { public static void main(String[] args) throws IOException { // 1. 创建HttpClient实例 CloseableHttpClient httpClient = HttpClients.createDefault(); // 2. 创建GET请求方法实例 HttpGet httpGet = new HttpGet("http://test.yangsf.vip"); // 3. 调用HttpClient实例来执行GET请求方法            ,得到response CloseableHttpResponse response = httpClient.execute(httpGet); // 4. 读response,判断是否访问成功 2xx表示 成功      。 int status = response.getStatusLine().getStatusCode(); if (status >= 200 && status < 300) { // 对得到后的实例可以进行处理                 ,例如读取回复体                 ,读取html HttpEntity entity = response.getEntity(); System.out.println(response); System.out.println("======================="); String html = EntityUtils.toString(entity); System.out.println(html); } else { throw new ClientProtocolException("Unexpected response status: " + status); } // 6. 释放连接 response.close(); httpClient.close(); } }

2.2 POST请求

步骤基本上一模一样,只不过可以设置让post带上参数:

httpPost.setEntity(new StringEntity("this is Post"));

package vip.yangsf; import com.sun.xml.internal.ws.api.pipe.ContentType; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; public class PostTest { public static void main(String... args) throws IOException { // 1. 创建HttpClient实例 CloseableHttpClient httpclient = HttpClients.createDefault(); // 2. 创建HttpPost实例 HttpPost httpPost = new HttpPost("http://httpbin.org/post"); httpPost.setEntity(new StringEntity("this is Post")); // 3. 调用HttpClient实例来执行HttpPost实例 CloseableHttpResponse response = httpclient.execute(httpPost); // 4. 读 response int status = response.getStatusLine().getStatusCode(); if (status >= 200 && status < 300) { HttpEntity entity = response.getEntity(); System.out.println(response); System.out.println("==================="); String html = EntityUtils.toString(entity); System.out.println(html); } else { throw new ClientProtocolException("Unexpected response status: " + status); } // 5. 释放连接 response.close(); httpclient.close(); } }

效果:

其他请求方法比如put            ,delete等也是大同小异      。

三                  、HttpClient提交表单

提交表单一共就这几步:

创建http实例 创建Post请求 设置表单参数并让Post携带 执行请求                 ,获取响应 解析响应 关闭资源 package vip.yangsf; import org.apache.http.Consts; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; 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; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class FormSubmitTest { public static void main(String[] args) throws IOException { // 1. 创建HttpClient实例 CloseableHttpClient httpClient = HttpClients.createDefault(); // 2. 设置表单参数 List<NameValuePair> kv = new ArrayList<>(); kv.add(new BasicNameValuePair("name", "root")); kv.add(new BasicNameValuePair("password", "123456")); // 3. 创建HttpPost实例 HttpPost httpPost = new HttpPost("http://httpbin.org/post"); // 4. 让Post携带表单参数 httpPost.setEntity(new UrlEncodedFormEntity(kv, Consts.UTF_8)); // 5. 获取HttpResponse响应 CloseableHttpResponse response = httpClient.execute(httpPost); // 6. 读response System.out.println(EntityUtils.toString(response.getEntity())); // 7. 释放资源 response.close(); httpClient.close(); } }

结果:

HttpClient最基本的用法就是这些                 。之后可以去官方文档查阅更多的用法      ,比如HttpClient还可以获取证书            ,上传文件等等            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
linux的重定向(LINUX怎么使用echo和重定向?) 如何快速走出蘑菇期(如何快速走出困境)