接口自动化笔记-httpget与httppost代码

本文通过示例介绍如何使用Java发起HTTP GET和POST请求,包括设置请求头、参数编码及从Excel读取测试数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
	    		
		
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值