个人学习使用:谨慎参考

1 Client类

import com.thoughtworks.gauge.Step;
import com.thoughtworks.gauge.Table;
import com.thoughtworks.gauge.TableRow; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* Created by KSC on 2/7/2017.
*/
public class testClient { //send get request /**
*
* @param url destination address
* @param parametersTable request parameters
* @return remote response result
*/
@Step("the get method url is <url> and parameters are <parametersTable>")
public static String sendGet(String url,Table parametersTable){
Map<String,String> parameters = new HashMap<>(); for(TableRow row : parametersTable.getTableRows()){
String key = row.getCell("name");
String value = row.getCell("age");
parameters.put(key,value);
}
for (String s: parameters.keySet()){
System.out.println(s+"\t"+parameters.get(s));
} String result = "";//返回的结果
BufferedReader in = null;//读取响应的输入流
StringBuffer sf = new StringBuffer();//存储参数
String params = "";//编码后的参数 try{
if (parameters.size() == 1){
for(String name : parameters.keySet()){
sf.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),"UTF-8")
);
}
params = sf.toString();
}else{
for(String name : parameters.keySet()){
sf.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),"UTF-8")
).append("&");
}
String tempParams = sf.toString();
params = tempParams.substring(0,tempParams.length()-1);
System.out.println(params);
} String fullUrl = url + "?" + params;
System.out.println(fullUrl); //创建URL对象
URL connUrl = new URL(fullUrl);
//打开URL链接
HttpURLConnection httpConn = (HttpURLConnection)connUrl.openConnection(); // 设置通用属性
httpConn.setRequestProperty("Accept","*/*");
httpConn.setRequestProperty("Connection","Keep-Alive");
httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"); //建立实际链接
httpConn.connect(); //响应头部的获取
Map<String,List<String>> headers = httpConn.getHeaderFields(); System.out.println("==============================");
//遍历头部所有字段
for(String key : headers.keySet()){
System.out.println(key+"\t: \t"+headers.get(key));
} //定义bufferedReader输入流来读取URL的响应,并设置编码方式
in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8")); String line = "";//读取返回的内容
while((line = in.readLine()) != null){
result = result+line;
} }catch(Exception e){
e.printStackTrace();
}finally{
try{
if(in != null){
in.close();
}
}catch(IOException ex){
ex.printStackTrace();
}
} System.out.println("*****************************");
System.out.println(result);
System.out.println("==============================");
return result;
} //send post request
@Step("the post method url is <url> and parameters are <parametersTable>")
public static String sendPost(String url,Table parametersTable){
Map<String,String> parameters = new HashMap<>(); for(TableRow row : parametersTable.getTableRows()){
String key = row.getCell("name");
String value = row.getCell("age");
parameters.put(key,value);
}
for (String s: parameters.keySet()){
System.out.println(s+"\t\t"+parameters.get(s));
}
System.out.println("---------------------"); String result = "";
BufferedReader in = null;
PrintWriter out = null;//
StringBuffer sf = new StringBuffer();
String params = ""; try{ if (parameters.size() == 1){
for(String name : parameters.keySet()){
sf.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),"UTF-8")
);
}
params = sf.toString();
}else{
for(String name : parameters.keySet()){
sf.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),"UTF-8")
).append("&");
}
String tempParams = sf.toString();
params = tempParams.substring(0,tempParams.length()-1);
} URL connUrl = new URL(url); HttpURLConnection httpConn = (HttpURLConnection)connUrl.openConnection(); httpConn.setRequestProperty("Accept","*/*");
httpConn.setRequestProperty("Connection","Keep-Alive");
httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"); //设置post方式
httpConn.setDoInput(true);
httpConn.setDoOutput(true); //获取HttpUrlConnection对象对应的输出流
out = new PrintWriter(httpConn.getOutputStream()); //发送请求参数
out.write(params); //flush(冲洗)输出流中的缓冲
out.flush(); in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8")); String line = "";
while((line = in.readLine()) != null){
result = result+line;
} }catch(Exception e){
e.printStackTrace();
}finally{
try{
if(out != null){
out.close();
}
if(in != null){
in.close();
}
}catch(IOException e){
e.printStackTrace();
}
} System.out.println("*****************************");
System.out.println(result);
System.out.println("============================");
return result;
} }

  2.测试类

  用自动化测试工具gauge进行测试

Use http request for creating user
=====================
Created by KSC on 2/7/2017 This is an executable specification file which follows markdown syntax.
Every heading in this file denotes a scenario. Every bulleted point denotes a step. call on url with method get
---------------- tags: get *the get method url is "http://localhost:8080" and parameters are
|name|age|
|----|---|
|tom|20|
|maike|22| call on url with method post
--------------------------- tags: post *the post method url is "https://www.baidu.com/" and parameters are
|name|age|
|----|---|
|marry|20|
|rose|22|

  

Java后台模拟发送http的get和post请求,并测试的更多相关文章

  1. Jmeter(二十七)模拟发送TCP/UDP/HTTP/FTP等请求包(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter安装UDP插件后支持发送UDP协议的请求包,官方介绍安装插件后可以用来测试DNS, NTP, TFTP, B ...

  2. jmeter ---模拟发送TCP/UDP/HTTP/FTP等请求包

    JMeter安装UDP插件后支持发送UDP协议的请求包,官方介绍安装插件后可以用来测试DNS, NTP, TFTP, Boot servers and many-many other systems. ...

  3. postman:模拟发送一个需要cookie认证的请求

    1.chrome 已安装插件intercept. 由于chrome安全的限制,发不出带cookie的请求.如果想要发送带cookie的请求,需要开启Interceptor. 2.chrome 浏览器要 ...

  4. java后台向路径发送请求获得相应参数

    从java后台向一路径发送请求,获得响应的参数,put get post ,还有一个返回URL的工具类,方便代码灵活修改 import java.io.BufferedReader; import j ...

  5. 安卓发送图片文字,java后台接收

    安卓使用retrofit2 和rxjava2 url: @Multipart @POST(UrlTools.STORYUPLOAD) Observable<Result> saveRepo ...

  6. 转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)

    本文转载自CSDN的jzj1993,原文连接:http://blog.csdn.net/jzj1993/article/details/39158865 有时我们需要使用安卓实现在后台模拟系统按键,比 ...

  7. Java爬虫模拟登录——不给我毛概二的H某大学

    你的账号访问太频繁,请一分钟之后再试! 从大一开始 就用脚本在刷课 在专业课踢的只剩下一门C#的情况下 活活刷到一周的课 大二开始教务系统多了一个非常**的操作 退课池 and 访问频繁缓冲 难道,我 ...

  8. 安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)

    继续在网上搜索安卓按键模拟(其实那时都不知道用什么关键字好了,能想到的关键字都用遍了,但是搜索出来的结果,都是之前提到的那几个依赖源码环境和系统权限的方案).发现有很多介绍ADB调试,向手机发送按键事 ...

  9. .net后台模拟浏览器get/post请求

    #region 后台模拟浏览器get/post请求 /// <summary> /// 发送请求方式 /// </summary> /// <param name=&qu ...

随机推荐

  1. Docker系列二:Docker的基本结构

    Docker的基本结构 Docker 的三大基础组件 Docker有三个重要的概念:仓库 , 镜像 和 容器 ,它们是Docker的三大基出组件 Docker的组织结构 Docker处于操作系统和虚拟 ...

  2. JavaScript设计模式之策略模式

    所谓"条条道路通罗马",在现实中,为达到某种目的往往不是只有一种方法.比如挣钱养家:可以做点小生意,可以打分工,甚至还可以是偷.抢.赌等等各种手段.在程序语言设计中,也会遇到这种类 ...

  3. Jpa中设置OneToMany插入报异常解决办法

    在Jpa中如果设置@OneToMany,但使用的时候,如果没有赋值,会报异常出现,这时只需要实例化一个空数组即可, 但类型一定要对应: 实例如下: newField.setxxxxxList(new ...

  4. R︱shiny实现交互式界面布置与搭建(案例讲解+学习笔记)

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 看了看往期的博客,这个话题竟然是第 ...

  5. R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- openNLP是NLP中比较好的开源工具,R语 ...

  6. dojo表格分页插件报错

    dojo表格分页插件报错 (1)dojo/parser::parse() error ReferenceError {stack:(...),message:"layout is not d ...

  7. Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver

    1.错误描述 WARN:2015-05-01 13:26:10[localhost-startStop-1] - HHH000402: Using Hibernate built-in connect ...

  8. java字符串替换的问题

    今天工作中遇到一个问题,需要输出mongodbObject中的部分内容,当我转换成字符串以后出现了好像无法替换的问题,经过验证,发现并非是不能替换,只是想法错误而已. package demo; /* ...

  9. FFMPEG:压缩之H264编码(YUV420P->H264)

    720*576@25hz,550帧的yuv420p数据,编码时间13.3秒. void CTest0Dlg::OnButton5() { // TODO: Add your control notif ...

  10. cfDNA基本知识

    定义 Circulating free DNA or Cell free DNA (cfDNA):循环游离DNA或者细胞游离DNA,释放到血浆中的降解的DNA片段. https://en.wikipe ...