httpclient post请求例子(无参数名与带参数名的例子),多线程并发处理
版本:4.1
- 带参数名的情况
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
// httpPost.setHeader("Accept-Encoding", "gzip,deflate");//表示返回的数据是压缩的zip格式
String postParam = "";//请求的参数内容
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("data", postParam));
httpPost.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200) {if (entity.getContentEncoding().toString().equalsIgnoreCase("Content-Encoding: gzip")) {
response.setEntity(new GzipDecompressingEntity(response.getEntity())); //对zip进行解压
entity = response.getEntity();
}
String responseContent = EntityUtils.toString(entity);
System.out.println("responseContent: \n" + responseContent);
}
}
- 无参数名的情况
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
// httpPost.setHeader("Accept-Encoding", "gzip,deflate");//表示返回的数据是压缩的zip格式
String postParam = "";//请求的参数内容
StringEntity paramEntity = new StringEntity(postParam);//无参数名,只是参数内容
httpPost.setEntity(paramEntity);
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200) {if (entity.getContentEncoding().toString().equalsIgnoreCase("Content-Encoding: gzip")) {
response.setEntity(new GzipDecompressingEntity(response.getEntity())); //对zip进行解压
entity = response.getEntity();
}
String responseContent = EntityUtils.toString(entity);
System.out.println("responseContent: \n" + responseContent);
}
}
- httpEntity的类结构图

Httpclient并发处理处理:主要改变Httpclient对象的生成
/**
* 适合多线程的HttpClient,用httpClient4.2.1实现
* @return DefaultHttpClient
*/
public static DefaultHttpClient getHttpClient()
{
// 设置组件参数, HTTP协议的版本,1.1/1.0/0.9
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
HttpProtocolParams.setUseExpectContinue(params, true); //设置连接超时时间
int REQUEST_TIMEOUT = 60*1000; //设置请求超时60秒钟
int SO_TIMEOUT = 60*1000; //设置等待数据超时时间60秒钟
//HttpConnectionParams.setConnectionTimeout(params, REQUEST_TIMEOUT);
//HttpConnectionParams.setSoTimeout(params, SO_TIMEOUT);
params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, REQUEST_TIMEOUT);
params.setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); //设置访问协议
SchemeRegistry schreg = new SchemeRegistry();
schreg.register(new Scheme("http",80,PlainSocketFactory.getSocketFactory()));
schreg.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory())); //多连接的线程安全的管理器
PoolingClientConnectionManager pccm = new PoolingClientConnectionManager(schreg);
pccm.setDefaultMaxPerRoute(20); //每个主机的最大并行链接数
pccm.setMaxTotal(100); //客户端总并行链接最大数 DefaultHttpClient httpClient = new DefaultHttpClient(pccm, params);
return httpClient;
}
httpclient post请求例子(无参数名与带参数名的例子),多线程并发处理的更多相关文章
- Spring MVC中forward请求转发2种方式(带参数)
Spring MVC中forward请求转发2种方式(带参数) http://www.51gjie.com/javaweb/956.html
- Qt 信号槽如何传递参数(或带参数的信号槽)
信号槽如何传递参数(或带参数的信号槽) 利用Qt进行程序开发时,有时需要信号槽来完成参数传递.带参数的信号槽在使用时,有几点需要注意的地 ...
- C#发送Post请求,带参数,不带参数,指定参数
1.不带参数发送Post请求 /// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param na ...
- c24--预编译,宏定义(带参数,不带参数)
// // main.c // 宏定义 #include <stdio.h> void test(); /* 预处理指令:在我们的文件翻译成0和1之前做的操作我们称之为预处理指令,一般以# ...
- 记录下httpclient 发送请求 服务端用@RequestBody 自动接收参数 报415
注解是post方式,那么检查以下内容:1. 你是否用了post请求2. 请求是否发送了数据3. 请求内容格式需要是 application/json .jquery 设置 contentType,-- ...
- Python装饰器实现带参数和不带参数
1 def log(text=None): 2 3 if isinstance(text, str): 4 def decorator(func): 5 @functools.wraps(func) ...
- Swift 函数做参数和闭包做参数的一个细节差别
函数作参数,示例为传入一个String和一个添加前缀的函数,返回一个添加完前缀的String: func demo(str:String,addPrefix:(String)->String)- ...
- JavaScript学习笔记 -- 带参数arguments的函数的用法
JavaScript函数有带参数与不带参数两种形式,不带参数情况如下: function myFunction() { alert('HelloWorld!') } 在这种类型的函数中,输出值是确定的 ...
- Qt带参数的信号和槽
在Qt的开发过程中,信号带参数是很常见的,在使用带参数的信号槽时,有以下几点需要注意. 当信号和槽函数的参数数量相同时,它们的参数类型要完全一致. 信号和槽函数的声明: signals: void i ...
随机推荐
- iframe 元素会创建包含另外一个文档的内联框架(即行内框架)
HTML 与 XHTML 之间的差异 在 HTML 4.1 Strict DTD 和 XHTML 1.0 Strict DTD 中,不支持 iframe 元素. 提示和注释: 提示:您可以把需要的文本 ...
- Linux命令之sed批量替换字符串操作
使用sed命令可以进行字符串的批量替换操作,以节省大量的时间及人力: 使用的格式如下: sed -i "s/oldstring/newstring/g" `grep oldstri ...
- linux 使用systemctl 启动服务报错: Error: No space left on device
By default, Linux only allocates 8192 watches for inotify, which is ridiculously low. And when it ru ...
- ubuntu server 安装nextcloud12
1.更新系统安装必要的依赖包 [user]$ sudo apt-get update && sudo apt-get -y upgrade [user]$ sudo apt-get i ...
- oracle返回最大值一条记录
虽然网上例子很多,但是试过多种办法都无效,原代码出处: https://blog.csdn.net/qyshibb/article/details/73332075 这个例子简单有效 select p ...
- PropertySheet
---------------------------------include----------------------------------- E:\OpenSourceGraph\OSG_i ...
- 五款免费的UML建模工具
1.免费UML建模工具推荐:JUDE–community 2.免费UML建模工具推荐:UMLet 3.免费UML建模工具推荐:ArgoUML 4.免费UML建模工具推荐:BOUml 5.免费UML建模 ...
- WSTMart开发文档
WSTMart开发文档页面 PC版 开源版 授权版 序言 WSTMart安装协议 WSTMart电商系统安装 商城前台安装操作指南 用户中心指南 商家中心操作指南 ...
- 关于GLSL中语法和调用规则的一些记录
glsl是什么就不多说了.这里只介绍一下glsl中一些限定符. glsl中包含两类具有定义性质的符号,一类是和c++中定义变量的一样的符号,用来说明存放数据的类型,如float,int,bool.还有 ...
- YUI前端优化原则-cookie与图像
四.图片.Coockie与移动应用篇 除此之外,图片和Coockie也是我们网站中几乎不可缺少组成部分,此外随着移动设备的流行,对于移动应用的优化也十分重要.这主要包括:Coockie: 减小Cook ...