热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java模拟getpost请求_Java后台模拟发送http的get和post请求,并测试

个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T

个人学习使用:谨慎参考

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 and parameters are ")

public static String sendGet(String url,Table parametersTable){

Map parameters &#61; new HashMap<>();

for(TableRow row : parametersTable.getTableRows()){

String key &#61; row.getCell("name");

String value &#61; row.getCell("age");

parameters.put(key,value);

}

for (String s: parameters.keySet()){

System.out.println(s&#43;"\t"&#43;parameters.get(s));

}

String result &#61; "";//返回的结果

BufferedReader in &#61; null;//读取响应的输入流

StringBuffer sf &#61; new StringBuffer();//存储参数

String params &#61; "";//编码后的参数

try{

if (parameters.size() &#61;&#61; 1){

for(String name : parameters.keySet()){

sf.append(name).append("&#61;").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8")

);

}

params &#61; sf.toString();

}else{

for(String name : parameters.keySet()){

sf.append(name).append("&#61;").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8")

).append("&");

}

String tempParams &#61; sf.toString();

params &#61; tempParams.substring(0,tempParams.length()-1);

System.out.println(params);

}

String fullUrl &#61; url &#43; "?" &#43; params;

System.out.println(fullUrl);

//创建URL对象

URL connUrl &#61; new URL(fullUrl);

//打开URL链接

HttpURLConnection httpConn &#61; (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> headers &#61; httpConn.getHeaderFields();

System.out.println("&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;");

//遍历头部所有字段

for(String key : headers.keySet()){

System.out.println(key&#43;"\t: \t"&#43;headers.get(key));

}

//定义bufferedReader输入流来读取URL的响应&#xff0c;并设置编码方式

in &#61; new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));

String line &#61; "";//读取返回的内容

while((line &#61; in.readLine()) !&#61; null){

result &#61; result&#43;line;

}

}catch(Exception e){

e.printStackTrace();

}finally{

try{

if(in !&#61; null){

in.close();

}

}catch(IOException ex){

ex.printStackTrace();

}

}

System.out.println("*****************************");

System.out.println(result);

System.out.println("&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;");

return result;

}

//send post request

&#64;Step("the post method url is and parameters are ")

public static String sendPost(String url,Table parametersTable){

Map parameters &#61; new HashMap<>();

for(TableRow row : parametersTable.getTableRows()){

String key &#61; row.getCell("name");

String value &#61; row.getCell("age");

parameters.put(key,value);

}

for (String s: parameters.keySet()){

System.out.println(s&#43;"\t\t"&#43;parameters.get(s));

}

System.out.println("---------------------");

String result &#61; "";

BufferedReader in &#61; null;

PrintWriter out &#61; null;//

StringBuffer sf &#61; new StringBuffer();

String params &#61; "";

try{

if (parameters.size() &#61;&#61; 1){

for(String name : parameters.keySet()){

sf.append(name).append("&#61;").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8")

);

}

params &#61; sf.toString();

}else{

for(String name : parameters.keySet()){

sf.append(name).append("&#61;").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8")

).append("&");

}

String tempParams &#61; sf.toString();

params &#61; tempParams.substring(0,tempParams.length()-1);

}

URL connUrl &#61; new URL(url);

HttpURLConnection httpConn &#61; (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 &#61; new PrintWriter(httpConn.getOutputStream());

//发送请求参数

out.write(params);

//flush(冲洗)输出流中的缓冲

out.flush();

in &#61; new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));

String line &#61; "";

while((line &#61; in.readLine()) !&#61; null){

result &#61; result&#43;line;

}

}catch(Exception e){

e.printStackTrace();

}finally{

try{

if(out !&#61; null){

out.close();

}

if(in !&#61; null){

in.close();

}

}catch(IOException e){

e.printStackTrace();

}

}

System.out.println("*****************************");

System.out.println(result);

System.out.println("&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;");

return result;

}

}

2.测试类

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

Use http request for creating user

&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;

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|



推荐阅读
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 配置多VLAN环境下的透明SQUID代理
    本文介绍如何在包含多个VLAN的网络环境中配置SQUID作为透明网关。网络拓扑包括Cisco 3750交换机、PANABIT防火墙和SQUID服务器,所有设备均部署在ESXi虚拟化平台上。 ... [详细]
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • 深入理解Lucene搜索机制
    本文旨在帮助读者全面掌握Lucene搜索的编写步骤、核心API及其应用。通过详细解析Lucene的基本查询和查询解析器的使用方法,结合架构图和代码示例,带领读者深入了解Lucene搜索的工作流程。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 本文详细解析了如何使用Python的urllib模块发起POST请求,并通过实例展示如何爬取百度翻译的翻译结果。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 本文详细介绍了Debian及其衍生发行版中如何通过/etc/network/interfaces文件进行网络接口的配置,对比了Red Hat系系统的不同之处,并提供了多种常见配置示例及解析。 ... [详细]
  • 探讨在 JavaScript 中使用不同方向的 for 循环来实现跟随鼠标的 div 动画时,为什么会出现不同的视觉效果。 ... [详细]
author-avatar
我是奥特曼8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有