【转】HTTP协议两种提交参数的方式Form-data和raw
原文:http://www.cnblogs.com/zhangfei/p/5099036.html
HTTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提交请求与RAW请求,下面我将结合HttpClient来实现一下这三种形式:
一.GET请求: GET请求时,参数一般是写在链接上的,代码如下:
- public void get(String url){
- CloseableHttpClient httpClient = null;
- HttpGet httpGet = null;
- try {
- httpClient = HttpClients.createDefault();
- RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();
- httpGet = new HttpGet(url);
- httpGet.setConfig(requestConfig);
- CloseableHttpResponse response = httpClient.execute(httpGet);
- HttpEntity httpEntity = response.getEntity();
- System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- if(httpGet!=null){
- httpGet.releaseConnection();
- }
- if(httpClient!=null){
- httpClient.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
如果想把参数不写在链接上,单独的传进去,则可以这样:
- public void get(String url, Map<String, String> params){
- CloseableHttpClient httpClient = null;
- HttpGet httpGet = null;
- try {
- httpClient = HttpClients.createDefault();
- RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();
- String ps = "";
- for (String pKey : params.keySet()) {
- if(!"".equals(ps)){
- ps = ps + "&";
- }
- ps = pKey+"="+params.get(pKey);
- }
- if(!"".equals(ps)){
- url = url + "?" + ps;
- }
- httpGet = new HttpGet(url);
- httpGet.setConfig(requestConfig);
- CloseableHttpResponse response = httpClient.execute(httpGet);
- HttpEntity httpEntity = response.getEntity();
- System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- if(httpGet!=null){
- httpGet.releaseConnection();
- }
- if(httpClient!=null){
- httpClient.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
二. POST请求的表单提交方式,代码如下:
- public void post(String url, Map<String, String> params){
- CloseableHttpClient httpClient = null;
- HttpPost httpPost = null;
- try {
- httpClient = HttpClients.createDefault();
- RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();
- httpPost = new HttpPost(url);
- httpPost.setConfig(requestConfig);
- List<NameValuePair> ps = new ArrayList<NameValuePair>();
- for (String pKey : params.keySet()) {
- ps.add(new BasicNameValuePair(pKey, params.get(pKey)));
- }
- httpPost.setEntity(new UrlEncodedFormEntity(ps));
- CloseableHttpResponse response = httpClient.execute(httpPost);
- HttpEntity httpEntity = response.getEntity();
- System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- if(httpPost!=null){
- httpPost.releaseConnection();
- }
- if(httpClient!=null){
- httpClient.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
三. POST请求的RAW参数传递:
- public void post(String url, String body){
- CloseableHttpClient httpClient = null;
- HttpPost httpPost = null;
- try {
- httpClient = HttpClients.createDefault();
- RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();
- httpPost = new HttpPost(url);
- httpPost.setConfig(requestConfig);
- httpPost.setEntity(new StringEntity(body));
- CloseableHttpResponse response = httpClient.execute(httpPost);
- HttpEntity httpEntity = response.getEntity();
- System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- if(httpPost!=null){
- httpPost.releaseConnection();
- }
- if(httpClient!=null){
- httpClient.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
【转】HTTP协议两种提交参数的方式Form-data和raw的更多相关文章
- 【Spark篇】---Spark中yarn模式两种提交任务方式
一.前述 Spark可以和Yarn整合,将Application提交到Yarn上运行,和StandAlone提交模式一样,Yarn也有两种提交任务的方式. 二.具体 1.yarn-clien ...
- html表单中的input元素的两种提交方式比较(get/post)
Http存在两种最常用的提交方式:Get和Post(电话面试有问到两种提交方式的区别) 什么是HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客 ...
- 【Spark篇】--Spark中Standalone的两种提交模式
一.前述 Spark中Standalone有两种提交模式,一个是Standalone-client模式,一个是Standalone-master模式. 二.具体 1.Standalon ...
- Spark剖析-宽依赖与窄依赖、基于yarn的两种提交模式、sparkcontext原理剖析
Spark剖析-宽依赖与窄依赖.基于yarn的两种提交模式.sparkcontext原理剖析 一.宽依赖与窄依赖 二.基于yarn的两种提交模式深度剖析 2.1 Standalne-client 2. ...
- form表单中get和post两种提交方式的区别
一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...
- C# 如何通过mailto标签和SMTP协议两种方式发送邮件
本文主要讲解如何通过如现mailto标签和SMTP协议两种方式发送邮件,下面就直入主题 方法一.通过mailto标签发送邮件 通过mailto不是正真意义上的发送邮件,它只是会自动调用我们本地默认的邮 ...
- 小记--------spark的两种提交模式
spark的两种提交模式:yarn-cluster . yarn-client 图解
- Spring两种实现AOP的方式
有两种实现AOP的方式:xml配置文件的方式和注解的形式 我们知道通知Advice是指对拦截到的方法做什么事,可以细分为 前置通知:方法执行之前执行的行为. 后置通知:方法执行之后执行的行为. 异常通 ...
- OC中两种单例实现方式
OC中两种单例实现方式 写在前面 前两天探索了一下C++ 的单例,领悟深刻了许多.今天来看看OC中的单例又是怎么回事.查看相关资料,发现在OC中一般有两种实现单例的方式,一种方式是跟C++ 中类似的常 ...
随机推荐
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...
- 写你自己struts1框架
前言 文本 它们的定义Struts1 commons-digester.jar解析XML 实现XML标签到对象的转换 1.依据目标XML的结构定义解析规则文件 參照rule.xml 2.创建集合对象接 ...
- 未能加载文件或程序集“Common”或它的某一个依赖项。试图加载格式不正确的程序
原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题解决方案一:如果是64位机器,IIS——应用程序池——高级设置——启用32位应用程序 :true.解决方案二:修改 ...
- ASP.NET自定义控件组件开发 第五章 模板控件开发
原文:ASP.NET自定义控件组件开发 第五章 模板控件开发 第五章 模板控件开发 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接 ...
- cassandra 服务启动流程
cassandra 服务启动流程 1. setup 1) CassandraDaemon ->main publicstaticvoidmain(String[]args) { insta ...
- Python调用微博API
上头叫通过微博ID获取用户公布过的历史微博内容,于是研究了下新浪微博提供的API 1 首先在微博开放中心下"创建应用"创建一个应用,应用信息那些随便填,填写完成后,不须要提交审核, ...
- Jedis连接
Jedis连接 到场api中的jedis.我们能够发现,jedis类提供了4个构造方法.都可用于连接: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29 ...
- struts详细解释拦截器
1.拦截器:Struts2拦截器将一个Action要么Action的方法.之前或截取后场,和Struts2拦截器是可插拔,拦截器AOP一种实现. WebWork:拦截器是动态拦截Action调用的对象 ...
- 【转】Android内存机制分析1——了解Android堆和栈
昨天用Gallery做了一个图片浏览选择开机画面的功能,当我加载的图片多了就出现OOM问题.以前也出现过这个问题,那时候并没有深究.这次打算好好分析一下Android的内存机制. 因为我以前是做VC+ ...
- NET 中的多线程
NET 中的多线程 为什么使用多线程 使用户界面能够随时相应用户输入 当某个应用程序在进行大量运算时候,为了保证应用程序能够随时相应客户的输入,这个时候我们往往需要让大量运算和相应用户输入这两个行为在 ...