模拟发起http请求的几种方法

原创 2015年07月10日 14:08:38
如何使用http协议调用服务器端的服务。
在日常工作中很多时候我们会需要测试自己提供出来的方法, 很多时候一些方法跨平台提供给第三方使用,一般与服务器通信协议都选择http协议,
建议可以去仔细学习一下http协议。也有一些以webService的方法提供给调用方使用。


下面我简单写一下如果再本地模拟http的请求调用服务器端的服务。
1.首先模拟一个服务器端的方法,我简单写了一个测试工程,部署到Tomcat上面,成功之后就可以调用服务了。
请求主方法,写了一个GET 和 POST的方法。分别对应http请求的两种不同的请求,一种GET请求,另外一种post请求。
@RequestMapping("test.do")
	public void test(HttpServletRequest request,HttpServletResponse response) throws IOException{
		response.getWriter().write("hello world!");
	}
	
	@RequestMapping("get.do")
	public void testGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
		request.setCharacterEncoding(ParamsUtil.UTF_8);
		response.setContentType("text/html;charset=UTF-8");
		String param1 = request.getParameter("param1");
		String param2 = request.getParameter("param2");
		response.getWriter().write("param1="+param1+"param2="+param2);
	}
	
	@RequestMapping("post.do")
	public void testPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
		request.setCharacterEncoding(ParamsUtil.UTF_8);
		response.setContentType("text/html;charset=UTF-8");
		String line = "";
		StringBuffer buffer = new StringBuffer();
		PrintWriter out = response.getWriter();
		BufferedReader bufferReader = new BufferedReader(new InputStreamReader(
				request.getInputStream(), ParamsUtil.UTF_8));
		while ((line = bufferReader.readLine()) != null) {
			buffer.append(line);
		}
		bufferReader.close();
		String postData = buffer.toString();
		out.write(postData);
	}



2.启动Tomcat,测试工程是否部署成功。

在浏览器栏输入下面的地址:http://localhost:8080/gateway/test.do 看到下面的界面就说明你的工程部署成功了~


                                                                                                    图1 启动项目进入测试界面


3.准备模拟http请求,这里主要介绍三种方法,分别为Jmeter模拟http请求,浏览器栏输入url请求,curl命令实现。



一.Jmeter进行http请求测试
1.配置Jmeter,按照以下步骤创建一个http请求。新建测试计划——新建线程组——在线程组下面新建http请求——在线程组下面新建查看结果树
按照图2进行配置,先测试post请求。配置完成之后点击启动按钮,请求结束之后到结果树下面查看结果。图3。


图2 Jmeter http请求配置


2.模拟POST请求
按照图2进行配置,测试post请求。

点击绿色启动按钮,就可以向http://127.0.0.1:8080/gateway/post.do 发起一个http post请求,对应上面的处理方法,结果返回输入的post data;见图3 点击查看结果树


图3 post请求响应数据

3.模拟get请求

按照图4进行Jmeter配置。设置了两个请求参数


图4 get请求配置
配置完成之后点击启动按钮,会按照下面的URL:http://127.0.0.1:8080/gateway/get.do?param1=hello&param2=world 进行一个http请求 ,请求完毕之后查看结果树,如图5


图5 get请求响应数据

二.浏览器栏输入url请求

一般都是用于get请求测试

直接在浏览器栏输入 http://127.0.0.1:8080/gateway/get.do?param1=hello&param2=world 按下回车,结果如图6


图6 浏览器请求响应数据



三.curl命令实现

1.一般windows 命令窗是不支持curl命令的,所以需要先下载一个curl命令工具,下载完成之后进入curl.exe所在目录就可以执行命令了。在linux机器上面可以直接执行,这里还是以window为例。 crul.exe在D盘,所以先进入D盘目录,查看crul命令提示。


图7 window上 运行curl命令

2.模拟http请求

示例1:curl -d "hello world" http://127.0.0.1:8080/gateway/post.do 运行结果如图8


图8 示例1

示例2:curl -G "http://127.0.0.1:8080/gateway/get.do?param1=hello&param2=world"

这里大家可能主要到了请求的url用冒号括起来了,这是为什么呢?如果不括的话,请求的参数只能获得param1,param2就取不到了。当然也有别的方法解决这个问题,这里就不普及了,大家有兴趣自己可以去搜索一下哈~执行结果如图9


图9 示例2执行结果


一般工作中经常遇到需要测试某个http服务,这里提供了3种方法给大家借鉴,当然还有其他一些方式,这三种本人认为是最方便简单的,希望对大家有所帮助!


HTTP网络请求原理 (三) 简单模拟HTTP服务器

本文中我们用一个简单的示例模拟了Web服务器与客户端你的交互过程. 整个示例就是在TCP智商封装了一层HTTP,用户通过HTTP相关的类进行操作,但是传输层依旧是通过TCP层. 客户端与服务端之间开辟...
  • lj402159806
  • lj402159806
  • 2017年03月11日 21:11
  • 1549

模拟HTTP请求实现网页自动操作及数据采集

网页可分为信息提供和业务操作类,信息提供如新闻、股票行情之类的网站。业务操作如网上营业厅、OA之类的。当然,也有很多网站同时具有这两种性质,像微博、豆瓣、淘宝这类网站,既提供信息,也实现某些业务。普通...
  • taonull
  • taonull
  • 2015年08月15日 18:05
  • 13308

轻松把玩HttpClient之模拟post请求示例

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建...
  • xiaoxian8023
  • xiaoxian8023
  • 2015年11月16日 13:23
  • 52070

RESTClient-HTTP请求模拟器-HTTP请求测试工具

  • 2015年04月15日 15:47
  • 12.92MB
  • 下载

http get post 请求模拟器

  • 2017年08月22日 20:40
  • 143KB
  • 下载

Postman—Http请求模拟工具

最近部门让我测试一个短信平台的接口,然后网上搜了一 搜,刚好找到了这个接口一、Postman说明  Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来很方便的模拟ge...
  • u011053407
  • u011053407
  • 2015年12月18日 16:53
  • 1621

RESTClient HTTP请求模拟器

  • 2014年11月14日 00:03
  • 13.41MB
  • 下载

http请求模拟工具-httpdebug

  • 2016年11月03日 16:00
  • 368KB
  • 下载

http请求模拟

import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.sec...
  • honghailiang888
  • honghailiang888
  • 2016年05月24日 16:50
  • 581

使用fiddler模拟http请求

使用fiddler模拟http请求 概述     与httpwath相比,fiddler能模拟http请求、能断点调试、http分析统计吸引了我,使用之后感觉这个工具非常不错,这篇文章只单介绍...
  • victory08
  • victory08
  • 2014年11月11日 14:36
  • 7923
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:模拟发起http请求的几种方法
举报原因:
原因补充:

(最多只允许输入30个字)