导入maven依赖

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.1.37</version>
</dependency>

使用httpclient提交get和post请求

package com.ilcbs.test;

import java.io.IOException;
import java.util.ArrayList; import org.apache.http.HttpEntity;
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;
import org.junit.Test; /**
* 测试HttpClient
* @author guorong
*
*/
public class HttpClientTest { //测试get请求
@Test
public void testGet() throws ClientProtocolException, IOException{
//获取httpClient客户端
CloseableHttpClient client = HttpClients.createDefault();
//创建get请求
HttpGet httpGet = new HttpGet("https://www.baidu.com");
//执行请求,返回响应
CloseableHttpResponse response = client.execute(httpGet); //获取响应实体
HttpEntity entity = response.getEntity();
//解析实体内容,可以设置解析字符集
String content = EntityUtils.toString(entity,"utf-8");
System.out.println(content);
} //测试post请求
@Test
public void testPost() throws ClientProtocolException, IOException{
//创建httpclient客户端
CloseableHttpClient client = HttpClients.createDefault(); //创建post请求
HttpPost httpPost = new HttpPost("https://passport.baidu.com/v2/api/?login"); ArrayList<BasicNameValuePair> arrayList = new ArrayList<BasicNameValuePair>();
arrayList.add(new BasicNameValuePair("username", "cgx"));
arrayList.add(new BasicNameValuePair("password", "123456"));
UrlEncodedFormEntity urlEntity = new UrlEncodedFormEntity(arrayList); httpPost.setEntity(urlEntity); //执行请求
CloseableHttpResponse response = client.execute(httpPost); //获取响应实体内容
HttpEntity entity = response.getEntity();
//指定编码解析实体内容
String content = EntityUtils.toString(entity, "utf-8");
System.out.println(content);
}
}

使用工具类

@Test
public void testHttpUtils(){
HashMap map = new HashMap();
map.put("username", "cgx");
map.put("password", "123456");
String doPost = HttpClientUtil.doPost("http://localhost:8080/itcast297/loginAction_login",map);
String zTreeJson = HttpClientUtil.doGet("http://localhost:8080/itcast297/sysadmin/roleAction_genzTreeNodes?id=4028a1c34ec2e5c8014ec2ebf8430001");
System.out.println(zTreeJson);
}

 工具类:

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.http.client.CookieStore;
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.protocol.HttpClientContext;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
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.BasicNameValuePair;
import org.apache.http.util.EntityUtils; public class HttpClientUtil { public static HttpClientContext context = null;
static {
System.out.println("====================begin");
context = HttpClientContext.create();
}

//get请求,携带请求参数
public static String doGet(String url, Map<String, String> param) {
System.out.println("====================get");
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = "";
CloseableHttpResponse response = null;
try {
// 创建uri
URIBuilder builder = new URIBuilder(url);
if (param != null) {
for (String key : param.keySet()) {
builder.addParameter(key, param.get(key));
}
}
URI uri = builder.build(); // 创建http GET请求
HttpGet httpGet = new HttpGet(uri); // 执行请求
response = httpclient.execute(httpGet,context);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == 200) {
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
}
  
   //get请求没有请求参数
public static String doGet(String url) {
return doGet(url, null);
}
  
  
//post请求,携带请求参数
public static String doPost(String url, Map<String, String> param) {
System.out.println("====================post");
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建参数列表
if (param != null) {
List<NameValuePair> paramList = new ArrayList<>();
for (String key : param.keySet()) {
paramList.add(new BasicNameValuePair(key, param.get(key)));
}
// 模拟表单
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
httpPost.setEntity(entity);
}
// 执行http请求
response = httpClient.execute(httpPost,context);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return resultString;
}
  
  
   //post请求,没有请求参数
public static String doPost(String url) {
return doPost(url, null);
} //Post请求, 携带json字符串
public static String doPostJson(String url, String json) {
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建请求内容
StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return resultString;
}
}

HttpClient测试的更多相关文章

  1. HttpClient 测试web API上传文件实例

    1.使用HttpClient 测试上传文件并且设置header信息: using Lemon.Common; using Newtonsoft.Json; using System; using Sy ...

  2. HttpClient测试框架

    HttpClient是模拟Http协议客户端请求的一种技术,可以发送Get/Post等请求. 所以在学习HttpClient测试框架之前,先来看一下Http协议请求,主要看请求头信息. 如何查看HTT ...

  3. 利用HttpClient测试

    import java.io.IOException;import java.security.cert.CertificateException;import java.security.cert. ...

  4. 使用HttpClient测试SpringMVC的接口

    转载:http://blog.csdn.net/tmaskboy/article/details/52355591 最近在写SSM创建的Web项目,写到一个对外接口时需要做测试,接受json格式的数据 ...

  5. HttpClient测试类请求端和服务端即可能出现乱码的解决

    junit HttpClient 请求端 代码: package com.taotao.httpclient; import java.util.ArrayList; import java.util ...

  6. 使用HttpClient工具类测试WebService接口(soap)

    import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import jav ...

  7. 使用Postman测试https接口时的小问题记录

    测试本地的WebApi接口时,接口是https,自己写的用httpclient测试是可以的, 用postman一直连接不了.原因正是由于https,不过postman在界面上已经给出了可能的原因和解决 ...

  8. 使用HttpClient配置代理服务器模拟浏览器发送请求调用接口测试

    在调用公司的某个接口时,直接通过浏览器配置代理服务器可以请求到如下数据: 请求url地址:http://wwwnei.xuebusi.com/rd-interface/getsales.jsp?cid ...

  9. $Java HttpClient库的使用

    (一)简介 HttpClient是Apache的一个开源库,相比于JDK自带的URLConnection等,使用起来更灵活方便. 使用方法可以大致分为如下八步曲: 1.创建一个HttpClient对象 ...

随机推荐

  1. Hadoop基准测试(一)

    测试对于验证系统的正确性.分析系统的性能来说非常重要,但往往容易被我们所忽视.为了能对系统有更全面的了解.能找到系统的瓶颈所在.能对系统性能做更好的改进,打算先从测试入手,学习Hadoop主要的测试手 ...

  2. STM32新MCU

    G0的出现完美的替换自家目前的F0系列而且有更好的性能和价格优势; STM32WL世界上首款LoRa Soc单片机嵌入了基于Semtech SX126x的经过特殊设计的无线电,该无线电提供两种功率输出 ...

  3. 【PAT甲级】1020 Tree Traversals (25 分)(树知二求一)

    题意: 输入一个正整数N(N<=30),给出一棵二叉树的后序遍历和中序遍历,输出它的层次遍历. trick: 当30个点构成一条单链时,如代码开头处的数据,大约1e9左右的结点编号大小,故采用结 ...

  4. Cortex-M3学习小结

  5. 输出简单图形(StringBuilder代替双重循环)

    在有些题目中打印简单图形必须使用StringBuilder或者StringBuffer,否则会运行超时(用String都会超时). 因为在题目的要求中说到输入的n是小于1000的,用双重循环就会超时, ...

  6. 若块级元素被设置为 display: table-cell 便无法设置宽度

    工作中,遇到表格的单元格中的 div 设置宽度无效,后来是发现 div 被设置为 display: table-cell ,后将其修改为 display: block 则设置的宽度生效.

  7. 学习Javascript的8张思维导图

    分别归类为: javascript变量 javascript运算符 javascript数组 javascript流程语句 javascript字符串函数 javascript函数基础 javascr ...

  8. 《精通iOS开发》书籍目录

    1.欢迎来到iOS和Swift世界 2.创建一个新项目 3.实现基本交互 4.更丰富的用户界面 5.自动旋转和自动调整大小 6.多视图应用 7.分页栏与选取器 8.表视图简介 9.导航控制器和表视图 ...

  9. postman提交文件

    说明 1.Headers中添加 Content-Type      multipart/form-data 2.Body 中选择form-data 并添加 需要传的参数名和值 最后新的一行选择file ...

  10. 2_04_MSSQL课程_查询_类型转换、表联合、日期函数、字符串函数

    类型转换 Convert(目标类型,转换的表达式,格式规范) Cast(表达式 as 类型) select Convert(nvarchar(32)),CustomerId))+Title from ...