http测试 java_java自动化测试-http请求get

首先我10.1过来自己玩通了讨鬼转极,看了电视剧白夜追凶,换了工作小组,这段时间确实比较少的更新博客,确实有点不勤奋,我先自我检讨

我就不赘述java的安装了,这个是比较简单的,有必要的话以后在讲

对于测试而言,一般的我们日常所接触到的请求是http请求和https请求,而http请求大部分可以分为get和post两种请求,所以接口的自动化测试也是从这里开始说起

本次先说的是get请求,至于其两者的区别可以在以后讲解后在进行对比

get请求是我们较为常见的请求,其本质就是我们在浏览器中输入地址进行请求,下面是java的代码

import java.io.*;

import java.net.*;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

public Map doGet(String url,Map parameterMap,String Cookie) throws Exception {//传入参数为url,参数map和header中的cookie

String url_parameterMap = url;

if(parameterMap.size()>0){

url_parameterMap = url +"?"+getMapString(parameterMap);//url拼接,将map的参数和url拼接为完整的url

}

URL localURL = new URL(url_parameterMap);

URLConnection connection = openConnection(localURL);

HttpURLConnection httpURLConnection = (HttpURLConnection)connection;

httpURLConnection.setRequestProperty("Accept-Charset", charset);

httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

httpURLConnection.setRequestProperty("Cookie", Cookie);//设置一些header

InputStream inputStream = null;

InputStreamReader inputStreamReader = null;

BufferedReader reader = null;

StringBuffer resultBuffer = new StringBuffer();

String tempLine = null;

if (httpURLConnection.getResponseCode() >= 300) {//这里是对http返回码的异常处理

new util.txtwrite().writetxtInt(url+" "+httpURLConnection.getResponseCode(),txtwrite);

throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());

}

try {

inputStream = httpURLConnection.getInputStream();

inputStreamReader = new InputStreamReader(inputStream);

reader = new BufferedReader(inputStreamReader);

while ((tempLine = reader.readLine()) != null) {

resultBuffer.append(tempLine);

}

} finally {

if (reader != null) {

reader.close();

}

if (inputStreamReader != null) {

inputStreamReader.close();

}

if (inputStream != null) {

inputStream.close();

}

}

String mapStr = resultBuffer.toString();//这个是返回值,是string格式的,可以转化为任意格式,这段代码是转为json-》map

JSONObject jasonObject = JSONObject.parseObject(mapStr);

Map map = (Map)jasonObject;

return map;

}

public String getMapString(Map parameterMap) throws Exception{

StringBuffer mapStr = new StringBuffer();

Set set = parameterMap.keySet();

Iterator it = set.iterator();

int len = set.size();

System.out.println(len);

int n =1;

while(it.hasNext()) {

if(n != len) {

String str = it.next().toString();

String str_value = parameterMap.get(str).toString();

String str_map = str + "=" +URLEncoder.encode(str_value,charset);

mapStr.append(str_map);

mapStr.append("&");

}

if(len == n){

String str = it.next().toString();

String str_value = parameterMap.get(str).toString();

String str_map = str + "=" +URLEncoder.encode(str_value,charset);

mapStr.append(str_map);

}

++n;

}

return mapStr.toString();

}

这段代码就可以做http的get请求了,先简单讲讲再说具体调用

get请求的特点是,如果要传a=1,b=2,则会把所有的参数和参数值的等式用&符号连接起来,在与url进行拼接为新的url,类似于http://+host+url?a=1&b=2这个形式,然后在进行get请求,我们只需要做的是,把结果进行收集,格式的话可以重写代码来实现多个格式的返回,这样一个基类的代码就写完了,需要注意的是,http请求一般是由请求头,请求的体来构成的,专业点就是header和body,一般的可以用httpURLConnection.setRequestProperty("Cookie", Cookie)这种参数直接把需要放的参数放到请求头里,请求体的话就是上文提到的a=1&b=2了,其实质就是在浏览器里输入http://+host+url?a=1&b=2

我们可以在自己的调用这个方法,利用返回值进行一系列工作,下面是一种调用方式

public static void zhuce(String mobile,String name,String Cookie,int gradeId) throws Exception {

applyParams = new HashMap();

applyParams.put("student.receiveEmailType", "1");

applyParams.put("student.name",name);

applyParams.put("student.sex", "1");

applyParams.put("student.gradeType", "1");

applyParams.put("student.gradeId", ""+gradeId);

util.HttpUtil httpDoGet = new util.HttpUtil();

String url="http://www.baidu.com/admin/serviceCenter/student/studentManage!newStudent.action";

String x=httpDoGet.doPost(url, applyParams, Cookie).toString();

}

当然,我的代码大部分是以map形式组合参数的,这里的话还是比较基础的组合之一,其实质还是map利用getmapstring这个函数,转化为 参数1名=参数1值&参数2名=参数2值的字符串

在实际工作中可以转化,也可以加上Java的一些逻辑来做,比如下面这段代码

public Map doGet(String url,Map parameterMap) throws Exception {

return doGet(url, parameterMap, "");

}

这就是在自动化工程中的处理方式,我写了传入cookie的get请求,但是有的时候并不需要传参,该怎么办?

我们要做的是,在保留原有逻辑的基础上进行修改,若我已经有一个较为全面的方法,则可以像上面的代码一样,穿一个空值即可,在代码中我可以传2个参数,也可以在需要传cookie的时候把它加在第三个参数中

那么,如果要是,我后面的代码要多传参数又该怎么办呢?只需要当成一个新方法来写啊,,,然后原有方法再来重新我的新方法即可

总的来说就可以了,下一次讲post请求,在进行对比吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值