首先我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<String,Object> 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<String,Object> map = (Map<String,Object>)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<String, Object>();
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<String,Object> doGet(String url,Map parameterMap) throws Exception {
return doGet(url, parameterMap, "");
}
  这就是在自动化工程中的处理方式,我写了传入cookie的get请求,但是有的时候并不需要传参,该怎么办?
  我们要做的是,在保留原有逻辑的基础上进行修改,若我已经有一个较为全面的方法,则可以像上面的代码一样,穿一个空值即可,在代码中我可以传2个参数,也可以在需要传cookie的时候把它加在第三个参数中
  那么,如果要是,我后面的代码要多传参数又该怎么办呢?只需要当成一个新方法来写啊,,,然后原有方法再来重新我的新方法即可
  总的来说就可以了,下一次讲post请求,在进行对比吧

java自动化测试-http请求get的更多相关文章

  1. java自动化测试-http请求结合抓包工具实际应用

    继上文我编写了java的get请求与post请求之后,我现在开始写一下实际操作 很多人有疑问,接口测试的代码是哪里来的,怎么来的呢?看得见吗?我来做一个简单的演示 我们这里简单介绍一下抓包工具,对于一 ...

  2. java自动化测试-http请求post

    继上文的get请求http://www.cnblogs.com/xuezhezlr/p/7667995.html的简单讲解后,这篇文章大概说一下我所遇到的主要的post请求以及他的测试代码 上文介绍到 ...

  3. Java自动化测试框架-03 - TestNG之Test Group篇 - 我们一起组团打怪升级(详细教程)

    简介 其实这篇文章的group宏哥在上一篇中就提到过,但是就是举例一笔带过的,因此今天专门有一篇文章来讲解Group的相关知识.希望大家茅塞顿开 ,有着更进一步认识和了解测试组. 一.Test Gro ...

  4. Java发送Http请求并获取状态码

    通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...

  5. selenium2 Webdriver + Java 自动化测试实战和完全教程

    selenium2 Webdriver + Java 自动化测试实战和完全教程一.快速开始 博客分类: Selenium-webdriverselenium webdriver 学习selenium ...

  6. java 实现https请求

    java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从 ...

  7. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

  8. 通过java发送http请求

    通常的http请求都是由用户点击某个连接或者按钮来发起的,但是在一些后台的Java程序中需要发送一些get或这post请求,因为不涉及前台页面,该怎么办呢? 下面为大家提供一个Java发送http请求 ...

  9. 深入浅出Java 重定向和请求转发的区别

    深入浅出Java 重定向和请求转发的区别 <span style="font-family:FangSong_GB2312;font-size:18px;">impor ...

随机推荐

  1. 团队作业1 团队展示&选题

    团队展示&选题 Coding项目地址:https://git.coding.net/wjunren/running.git 一.团队展示 1.队名:Runing Guys 2.队员: 组长:骆 ...

  2. 201421123059 http://www.cnblogs.com/deng201421123059/

    201421123059 http://www.cnblogs.com/deng201421123059/

  3. 团队作业4——第一次项目冲刺(Alpha版本) Day4

    借的今天有课,我们团队在课间时间开了简短的会议 2.Leangoo任务分解图: 3.会议结果,和任务分配 队员 今日进展 明日安排 林燕 试编写签到.请假功能的代码雏形 签到.请假功能成熟 王李焕 和 ...

  4. 作业2——需求分析&原型设计

    需求分析: 软件的最终目的是用来解决用户的某些问题,需求分析就是要理解要解决的问题,真正明确用户需求.下面是我们初步的需求分析: 1.访问软件项目的真实用户(至少10个),确保软件真正体现用户的需求, ...

  5. 控制结构(9) 管道(pipeline)

    // 上一篇:线性化(linearization) // 下一篇:指令序列(opcode) 最近阅读了酷壳上的一篇深度好文:LINUX PID 1 和 SYSTEMD.这篇文章介绍了systemd干掉 ...

  6. 201521123044 《Java程序设计》第12周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  7. 201521123040《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...

  8. 201521123087 《Java程序设计》第9周学习总结

    1. 本周学习总结 2. 书 面作业 本次PTA作业题集异常 常用异常题目5-11.1 截图你的提交结果(出现学号)1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免?   ...

  9. cas-单点登录-应用说明

    单独在tomcat中启动cas 1,  我的百度网盘中有 cas  和 tomcat-cas 压缩包  http://pan.baidu.com/s/1bnxVRkF   直接解压缩就可以使用. 2, ...

  10. Qt Creator编译运行成功,但是显示系统找不到指定的文件(比如urlmon.dll动态链接库)

    问题: 以前自己写的一个QT界面程序,在win 7 的32位系统上运行没有出现任何问题,但是重装系统之后,同样的程序放到win10 的64位系统下运行会出现警告:onecoreuap\inetcore ...