模拟以Form表单方式发送Http请求
2017-07-29 17:50
399 查看
有的时候我们需要模拟实现以表单的方式提交一个请求,看看后台服务是否正常处理,这里我们简单实现并记录一下,看看怎么实现。
废话不多说,直接贴出代码:
在上面的代码中,为了使用Fiddler抓包查看是否请求报文是以Post方式表单提交方式请求的,所以在代码中增加了相关的代理设置代码。
这里使用的HttpClient包的版本是4.3.2,经过测试用例可以正常执行。这里仅做知识点的记录,有需要的可以看下,没有需要的勿喷,谢谢!
废话不多说,直接贴出代码:
package com.iflytek.ossp.vaserver.cmd; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; public class Test1 { public static void main(String[] args) throws ClientProtocolException, IOException { Map<String,String> params = new HashMap<String,String>(); params.put("name", "majing"); String result = httpPostWithForm("http://localhost:8081/simulation/vaclient/ttokenvalidate/success", params); System.out.println(result); } private static String httpPostWithForm(String url, Map<String, String> params) throws ClientProtocolException, IOException { List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); for (Entry<String, String> param : params.entrySet()) { pairList.add(new BasicNameValuePair(param.getKey(), param.getValue())); } HttpPost httpPost = new HttpPost(url); //添加代理,用于抓包 HttpHost proxy = new HttpHost("127.0.0.1", 8888, "http"); RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(8000).setConnectTimeout(8000).setSocketTimeout(8000).setProxy(proxy).build(); httpPost.setConfig(requestConfig); httpPost.setEntity(new UrlEncodedFormEntity(pairList, "utf-8")); String respContent = null; HttpClient _httpClient = HttpClients.createDefault(); HttpResponse resp = _httpClient.execute(httpPost); HttpEntity he = resp.getEntity(); respContent = EntityUtils.toString(he, "UTF-8"); return respContent; } }
在上面的代码中,为了使用Fiddler抓包查看是否请求报文是以Post方式表单提交方式请求的,所以在代码中增加了相关的代理设置代码。
这里使用的HttpClient包的版本是4.3.2,经过测试用例可以正常执行。这里仅做知识点的记录,有需要的可以看下,没有需要的勿喷,谢谢!
相关文章推荐
- java中 模拟 form get发送 字符 (utf-8 百度的发送方式了)
- Javascript模拟FORM以POST方式提交表单数据
- 通过表单form模拟post方式提交多参数实现文件下载
- js form表单发送数据两种方式(post get)区别
- java 发送http请求(提交form表单)
- HttpClient:模拟表单提交文件,发送multipart/form-data数据
- Java发送Http请求,模拟表单上传文件
- javascipt模拟生成form表单2种提交方式
- jquery的ajax提交form表单方式总结
- java模拟post方式提交表单实现图片上传【转】
- mysql交互(如何接收表单数据 Get方式,Post方式 (form表单))
- form表单的多种提交方式
- 用get方式提交form表单的中文处理方式
- java发送http请求时设置请求方式(post,put,delete,get)
- Form表单的二种提交方式(Spring后台controller处理)
- js 模拟表单post方式提交
- Form表单提交验证方式
- 表单默认采用method=GET方式发送请求
- C#通过GET/POST方式发送Http请求
- Form表单提交的简要方式