HttpClient get和post请求的示例代码以及防乱码处理
2017-02-22 22:39
1061 查看
请求别人发布的服务我们可能就会使用到HttpClient这个包,HttpClient就是一个支持 HTTP 协议的客户端编程工具包,用来模拟浏览器请求。
乱码解决方法:
就是给HttpGet对象或者HttpPost对象添加头部,如下所示:
1.发布服务
这里我们先发布一个服务用于测试HttpClient的请求,这里发布两个接口,一个用于测试post的一个用于测试get的,springMVC的controller的代码片段如下:
2.创建maven工程测试HttpClient的使用
工程结构:
pom文件的内容:
测试类HttpClientTest代码如下
做get请求测试:
服务端收到的请求:
客户端收到的请求:
做post测试
服务端收到的请求:
客户端收到的请求:
测试完成!
乱码解决方法:
就是给HttpGet对象或者HttpPost对象添加头部,如下所示:
//设置请求的报文头部的编码 obj.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")); //设置期望服务端返回的编码 obj.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8"));
1.发布服务
这里我们先发布一个服务用于测试HttpClient的请求,这里发布两个接口,一个用于测试post的一个用于测试get的,springMVC的controller的代码片段如下:
/** * 测试httpclient get方法 * * @param id * @return */ @RequestMapping(value = "/api/httpClientTestGet.do", method = RequestMethod.GET) @ResponseBody public String httpClientTestGet(String id) { System.out.println("收到httpclient请求:id=" + id); return "id为:" + id + "的名字是lijie"; } /** * 测试httpclient post方法 * * @param name * @param password * @return */ @RequestMapping(value = "/api/httpClientTestPost", method = RequestMethod.POST) @ResponseBody public String httpClientTestPost(String username, String password) { System.out.println("name:" + username + " ,password" + password); return "登陆成功!"; }
2.创建maven工程测试HttpClient的使用
工程结构:
pom文件的内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>httpclient-maven</groupId> <artifactId>httpclient-maven</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.6</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>
测试类HttpClientTest代码如下
package com.lijie.hc; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; 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.client.utils.URIBuilder; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; /** * * @author 黎杰 * */ public class HttpClientTest { public static void main(String[] args) throws Exception { // testGet(); // testPost(); } /** * httpclient get请求 * * @throws Exception */ public static void testGet() throws Exception { //创建一个httpclient对象 CloseableHttpClient client = HttpClients.createDefault(); //创建URIBuilder URIBuilder uri = new URIBuilder("http://localhost:8080/api/httpClientTestGet.do"); //设置参数 uri.addParameter("id", "10001"); //创建httpGet对象 HttpGet hg = new HttpGet(uri.build()); //设置请求的报文头部的编码 hg.setHeader( new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")); //设置期望服务端返回的编码 hg.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8")); //请求服务 CloseableHttpResponse response = client.execute(hg); //获取响应码 int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200) { //获取返回实例entity HttpEntity entity = response.getEntity(); //通过EntityUtils的一个工具方法获取返回内容 String resStr = EntityUtils.toString(entity, "utf-8"); //输出 System.out.println("请求成功,请求返回内容为: " + resStr); } else { //输出 System.out.println("请求失败,错误码为: " + statusCode); } //关闭response和client response.close(); client.close(); } public static void testPost() throws Exception { //创建一个httpclient对象 CloseableHttpClient client = HttpClients.createDefault(); //创建一个post对象 HttpPost post = new HttpPost("http://localhost:8080/api/httpClientTestPost.do"); //创建一个Entity,模拟表单数据 List<NameValuePair> formList = new ArrayList<>(); //添加表单数据 formList.add(new BasicNameValuePair("username", "黎杰")); formList.add(new BasicNameValuePair("password", "10086")); //包装成一个Entity对象 StringEntity entity = new UrlEncodedFormEntity(formList, "utf-8"); //设置请求的内容 post.setEntity(entity); //设置请求的报文头部的编码 post.setHeader( new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")); //设置期望服务端返回的编码 post.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8")); //执行post请求 CloseableHttpResponse response = client.execute(post); //获取响应码 int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200) { //获取数据 String resStr = EntityUtils.toString(response.getEntity()); //输出 System.out.println("请求成功,请求返回内容为: " + resStr); } else { //输出 System.out.println("请求失败,错误码为: " + statusCode); } //关闭response和client response.close(); client.close(); } }
做get请求测试:
服务端收到的请求:
客户端收到的请求:
做post测试
服务端收到的请求:
客户端收到的请求:
测试完成!
相关文章推荐
- 我的Android进阶之旅------>Android发送GET和POST以及HttpClient发送POST请求给服务器响应
- http 的post与get方法 以及处理中文乱码问题
- Android例子—HttpURLConnection发送POST、GET请求代码示例
- Java代码中利用httpClient发送post、get请求
- HttpClient之Get请求和Post请求示例 编辑
- HttpClient之Get请求和Post请求示例
- Android发送GET和POST以及HttpClient发送POST请求给服务器响应
- HttpClient使用Post和Get提交参数 中文乱码处理
- HttpClient的get和post请求处理
- 我的Android进阶之旅------>Android发送GET和POST以及HttpClient发送POST请求给服务器响应
- HttpClient之Get请求和Post请求示例
- OkHttp 3.0之后版本GET、POST请求以及POST上传文件的示例代码
- httpClient Post例子,Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete
- httpClient Post例子,Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete
- HttpClient Post和Get请求实例+ 中文参数处理
- Android Http get和post请求,URLConnection以及Cookie的处理
- Java 通过HttpClient 带证书方式请求Https协议网站 (Post方式带xml文档,Get以及Delete方式)
- vue中axios处理http发送请求的示例(Post和get)
- HttpClient 4.5版本实现文件上传下载以及常用post、get请求
- springmvc 处理http get/post请求中文乱码的问题