package com.kitty.demo.apilesson;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.text.html.parser.Entity;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.kitty.demo.apilesson.util.HttpUtil;
import com.mysql.fabric.Response;
public class HttpGetDemo {
private CloseableHttpClient httpClient;
//接口URL
private String baseUrl="http://121.40.156.59:8080/javamall/shop/admin/member!memberlistJson.do";
private String paramUrl = "http://121.40.156.59:8080/javamall/shop/admin/member!memberlistJson.do?page=1&rows=10&sort=email&order=asc";
@BeforeClass
public void setUp() {
// 创建HttpClient
httpClient = HttpClients.createDefault();
}
@AfterClass
public void teardown() throws IOException {
httpClient.close();
}
//@Test(description = "Cookie绕过登录")
public void testAddHeader() throws ClientProtocolException, IOException {
HttpGet httpGet = new HttpGet(baseUrl);
httpGet.addHeader("Cookie", "JSESSIONID=E949CEE55752D551CB1103F1A6919BDA");
HttpResponse response=httpClient.execute(httpGet);
System.out.println(EntityUtils.toString(response.getEntity()));
}
@Test
public void testEncode() throws ClientProtocolException, IOException {
//新建查询Map
Map<String,String> paramMap=new HashMap<String,String>();
paramMap.put("page", "1");
paramMap.put("rows", "2");
paramMap.put("sort", "email");
paramMap.put("order", "asc");
//调用工具类HttpUtil,使用HttpUtil工具类实现参数的拼接和自动编码(特殊字符会自动按UTF-8进行编码)
String urlParam=HttpUtil.getQueryParam(paramMap);
System.out.println(urlParam);
//根据HttpUtil的转换结果,把参数String和请求路径拼接在一起,行成最终的Url发送到服务器
HttpGet request=new HttpGet(baseUrl+urlParam);
//添加Cookie
request.addHeader("Cookie", "JSESSIONID=E949CEE55752D551CB1103F1A6919BDA");
//执行请求,获取响应,打印响应结果
HttpResponse response=httpClient.execute(request);
System.out.println(EntityUtils.toString(response.getEntity()));
}
}
----------------HttpPost-----------------------
package com.kitty.demo.apilesson;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import com.kitty.demo.apilesson.util.ExcelDataUtil;
public class HttpPostDemo {
private CloseableHttpClient httpClient;
//接口的URL
String basicUrl="http://121.40.156.59:8080/javamall/shop/admin/member!saveMember.do";
@BeforeClass
public void setUp() {
httpClient = HttpClients.createDefault();
}
@AfterClass
public void teardown() throws IOException {
httpClient.close();
}
//@Test(description="参数化HttpPost请求")
public void testPost() throws ClientProtocolException, IOException {
//新建HttpPost对象,输入HttpPost接口的Url
HttpPost postRequest=new HttpPost(basicUrl);
//添加Cookie绕过登录
postRequest.addHeader("Cookie", "JSESSIONID=E949CEE55752D551CB1103F1A6919BDA");
//参数处理1:新建名值对的列表,去放多个不同的参数
List<NameValuePair> paramsList=new ArrayList<NameValuePair>();
//参数处理2:member.name
//客户端编码方式是utf-8, 服务端编码方式是iso-8859-1,发送请求以前转码
String unameBeforeEncode=RandomStringUtils.random(3,"测试黄小王陈张李");
System.out.println(unameBeforeEncode);
String unameAfterEncode=new String (unameBeforeEncode.getBytes("UTF-8") ,"ISO-8859-1");
paramsList.add(new BasicNameValuePair("member.uname", unameAfterEncode));
//参数处理2:member.password
paramsList.add(new BasicNameValuePair("member.password", "123"));
//参数处理2:member.email
String emailRandom=RandomStringUtils.randomAlphabetic(5);
String email=emailRandom+"@qq.com";
paramsList.add(new BasicNameValuePair("member.email", email));
//参数处理2:member.sex
String sex=RandomStringUtils.random(1,"01");
System.out.println(sex);
paramsList.add(new BasicNameValuePair("member.sex", sex));
//参数处理2:member.mobile
String mobile_8=RandomStringUtils.randomNumeric(8);
String mobile="152"+mobile_8;
paramsList.add(new BasicNameValuePair("member.mobile", mobile));
//参数处理3:基于参数名值对的列表生成一个表单实体对象
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(paramsList);
//参数处理4:把表单对象传送给post请求
postRequest.setEntity(entity);
//httpClient发起Post请求
HttpResponse response= httpClient.execute(postRequest);
//根据response对象获取响应行
StatusLine status= response.getStatusLine();
//根据status对象获取响应码
System.out.println("响应码:"+status.getStatusCode());
System.out.println("响应体:"+EntityUtils.toString(response.getEntity()));
}
@Test(dataProvider="memberDataByExcel")
public void testPostDp(String uname,String password) throws ClientProtocolException, IOException {
//新建HttpPost对象,输入HttpPost接口的Url
HttpPost postRequest=new HttpPost(basicUrl);
//添加Cookie绕过登录
postRequest.addHeader("Cookie", "JSESSIONID=E949CEE55752D551CB1103F1A6919BDA");
//参数处理1:新建名值对的列表,去放多个不同的参数
List<NameValuePair> paramsList=new ArrayList<NameValuePair>();
//参数处理2:往参数列表里添加内容
paramsList.add(new BasicNameValuePair("member.uname", uname));
//参数处理2:member.password
paramsList.add(new BasicNameValuePair("member.password", password));
//参数处理3:基于参数名值对的列表生成一个表单实体对象
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(paramsList);
//参数处理4:把表单对象传送给post请求
postRequest.setEntity(entity);
//httpClient发起Post请求
HttpResponse response= httpClient.execute(postRequest);
//根据response对象获取响应行
StatusLine status= response.getStatusLine();
//根据status对象获取响应码
System.out.println("响应码:"+status.getStatusCode());
System.out.println("响应体:"+EntityUtils.toString(response.getEntity()));
}
@DataProvider(name="memberData")
public Object[][] getMemberData(){
return new Object[][]{ {"dpaa1","123"},{"dpaa2","123"}};
}
@DataProvider(name="memberDataByExcel")
public Object[][] getMemberDataByExcel(){
return ExcelDataUtil.read("/excel/userInfo.xls","user", 1, 0, 0, 0);
// return ExcelDataUtil.read(dataFile, sheetName, beginRowNum, rowOffset, beginColumnNum, columnOffset);
}
//@Test
public void testRandomString() {
//RandomStringUtils生成指定长度的字符串
// String fixedLengthStr=RandomStringUtils.randomAlphabetic(3,10);
// System.out.println("fixedLengthStr:"+fixedLengthStr);
// //从指定字符集里生成随机长度的字符串
// String fixedCharStr=RandomStringUtils.random(3,"测试人员黄小");
// System.out.println("fixedCharStr"+fixedCharStr);
String fixedNumStr=RandomStringUtils.random(8,"1234567890");
System.out.println(fixedNumStr);
String mobile="138"+fixedNumStr;
System.out.println(mobile);
String randomNum= RandomStringUtils.randomNumeric(8);
System.out.println("randomNum8位数字"+randomNum);
}
}