我的工作的HttpClient
POST方法。我需要创建的HttpClient
一次,应该使用保持活动连接。但我认为,在我的情况下,其建立新连接每次。
所以,我需要使用的保活的连接的HttpClient
。
下面是我的code片段的任何帮助将是AP preciated很多。
ClientConnectionManager经理= httpclient_recv.getConnectionManager();
马力= httpclient_recv.getParams();
httpclient_recv =新DefaultHttpClient(
新ThreadSafeClientConnManager(HP,mgr.getSchemeRegistry()),马力);
而(真){
尝试 {
java.util.logging.Logger.getLogger(org.apache.http.wire)
.setLevel(java.util.logging.Level.FINER);
java.util.logging.Logger.getLogger(org.apache.http.headers)
.setLevel(java.util.logging.Level.FINER);
System.setProperty(org.apache.commons.logging.Log
org.apache.commons.logging.impl.SimpleLog);
System.setProperty(
org.apache.commons.logging.simplelog.showdatetime
真正);
System.setProperty(
org.apache.commons.logging.simplelog.log.httpclient.wire
调试);
System.setProperty(
org.apache.commons.logging.simplelog.log.org.apache.http
调试);
System.setProperty(
org.apache.commons.logging.simplelog.log.org.apache.http.headers
调试);
ByteArrayEntity BAE =新ByteArrayEntity(byteData);
bae.setContentType(新BasicHeader(HTTP.CONTENT_TYPE,
二进制/八位字节流));
httppost_recv.setHeader(HTTP.CONN_DIRECTIVE,HTTP.CONN_KEEP_ALIVE);
httppost_recv.setEntity(BAE);
{
的System.out.println(RES B4反应);
response_recv = httpclient_recv
.execute(httppost_recv);
。response_recv.getEntity()consumeContent();
的System.out.println(RES A4反应);
如果(response_recv!= NULL){
的字节数组= EntityUtils.toByteArray(response_recv
.getEntity());
播放= TRUE;
}
}
}
和也的logcat日志是:
10月12日至三日:07:29.466:我/的System.out(1529):资源B4响应
10月12号至3日:07:29.646:D / org.apache.http.wire(1529):>> POST /平HTTP / 1.1 [EOL]
10月12号至3日:07:29.666:D / org.apache.http.wire(1529):>> 连接:保持活动[EOL]
10月12号至3日:07:29.686:D / org.apache.http.wire(1529):>> 内容长度:1 [EOL]
10月12号至3日:07:29.705:D / org.apache.http.wire(1529):>> 内容类型:二进制/八位字节流[EOL]
10月12号至3日:07:29.716:D / org.apache.http.wire(1529):>> 主持人:192.168.1.36 [EOL]
10月12号至3日:07:29.725:D / org.apache.http.wire(1529):>> 用户代理:Apache的HttpClient的/不可用(Java 1.4中)[EOL]
10月12号至3日:07:29.736:D / org.apache.http.wire(1529):>> [EOL]
10月12号至3日:07:29.746:D / org.apache.http.headers(1529):>> POST /平HTTP / 1.1
10月12号至3日:07:29.746:D / org.apache.http.headers(1529):>>连接:保持活动
10月12号至3日:07:29.756:D / org.apache.http.headers(1529):>>内容长度:1
10月12号至3日:07:29.756:D / org.apache.http.headers(1529):>>内容类型:二进制/八位字节流
10月12号至3日:07:29.765:D / org.apache.http.headers(1529):>>主持人:192.168.1.36
10月12号至3日:07:29.765:D / org.apache.http.headers(1529):>>用户代理:Apache的HttpClient的/不可用(Java 1.4中)
10月12号至3日:07:29.776:D / org.apache.http.wire(1529):>> [为0x0]
10月12号至3日:07:29.796:D / org.apache.http.wire(1529):其中;&其中; HTTP / 1.1 200 OK [EOL]
10月12号至3日:07:29.805:D / org.apache.http.wire(1529):其中;&其中; 服务器:gSOAP的/ 2.8 [EOL]
10月12号至3日:07:29.816:D / org.apache.http.wire(1529):其中;&其中; 内容类型:二进制/八位字节流[EOL]
10月12号至3日:07:29.826:D / org.apache.http.wire(1529):其中;&其中; 内容长度:2048 [EOL]
10月12号至3日:07:29.836:D / org.apache.http.wire(1529):其中;&其中; **连接:关闭[EOL]**
10月12号至3日:07:29.887:D / org.apache.http.headers(1529):其中;&其中; HTTP / 1.1 200 OK
10月12号至3日:07:29.896:D / org.apache.http.headers(1529):其中;&其中;服务器:gSOAP的/ 2.8
10月12号至3日:07:29.896:D / org.apache.http.headers(1529):其中;&其中;内容类型:二进制/八位字节流
10月12号至3日:07:29.906:D / org.apache.http.headers(1529):其中;&其中;内容长度:2048
10月12号至3日:07:29.906:D / org.apache.http.headers(1529):其中;&其中; **连接:关闭**
10月12号至3日:07:29.916:我/的System.out(1529):资源A4响应
解决方案
10:07:29.746:D / org.apache.http.headers(1529):>>连接:保持活动
您正在请求存活。
10:07:29.836:D / org.apache.http.wire(1529):其中;&其中; 连接:关闭[EOL]
服务器拒绝它。
没有什么,你可以在你到底做了一番。
I am working HttpClient
POST method. I need to create HttpClient
once and should use Keep Alive Connection. But I think in my case , its establishing a new connection every time.
So, i need to use a Keep Alive connection for HttpClient
.
Here is my code snippet any help would be appreciated lot.
ClientConnectionManager mgr = httpclient_recv.getConnectionManager();
hp = httpclient_recv.getParams();
httpclient_recv = new DefaultHttpClient(
new ThreadSafeClientConnManager(hp,mgr.getSchemeRegistry()), hp);
while (true) {
try {
java.util.logging.Logger.getLogger("org.apache.http.wire")
.setLevel(java.util.logging.Level.FINER);
java.util.logging.Logger.getLogger("org.apache.http.headers")
.setLevel(java.util.logging.Level.FINER);
System.setProperty("org.apache.commons.logging.Log",
"org.apache.commons.logging.impl.SimpleLog");
System.setProperty(
"org.apache.commons.logging.simplelog.showdatetime",
"true");
System.setProperty(
"org.apache.commons.logging.simplelog.log.httpclient.wire",
"debug");
System.setProperty(
"org.apache.commons.logging.simplelog.log.org.apache.http",
"debug");
System.setProperty(
"org.apache.commons.logging.simplelog.log.org.apache.http.headers",
"debug");
ByteArrayEntity bae = new ByteArrayEntity(byteData);
bae.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"binary/octet-stream"));
httppost_recv.setHeader(HTTP.CONN_DIRECTIVE,HTTP.CONN_KEEP_ALIVE);
httppost_recv.setEntity(bae);
{
System.out.println("res b4 response");
response_recv = httpclient_recv
.execute(httppost_recv);
response_recv.getEntity().consumeContent();
System.out.println("res a4 response");
if (response_recv != null) {
byteArray = EntityUtils.toByteArray(response_recv
.getEntity());
playing = true;
}
}
}
and also logcat logs is:
12-03 10:07:29.466: I/System.out(1529): res b4 response
12-03 10:07:29.646: D/org.apache.http.wire(1529): >> "POST /ping HTTP/1.1[EOL]"
12-03 10:07:29.666: D/org.apache.http.wire(1529): >> "Connection: Keep-Alive[EOL]"
12-03 10:07:29.686: D/org.apache.http.wire(1529): >> "Content-Length: 1[EOL]"
12-03 10:07:29.705: D/org.apache.http.wire(1529): >> "Content-Type: binary/octet-stream[EOL]"
12-03 10:07:29.716: D/org.apache.http.wire(1529): >> "Host: 192.168.1.36[EOL]"
12-03 10:07:29.725: D/org.apache.http.wire(1529): >> "User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)[EOL]"
12-03 10:07:29.736: D/org.apache.http.wire(1529): >> "[EOL]"
12-03 10:07:29.746: D/org.apache.http.headers(1529): >> POST /ping HTTP/1.1
12-03 10:07:29.746: D/org.apache.http.headers(1529): >> Connection: Keep-Alive
12-03 10:07:29.756: D/org.apache.http.headers(1529): >> Content-Length: 1
12-03 10:07:29.756: D/org.apache.http.headers(1529): >> Content-Type: binary/octet-stream
12-03 10:07:29.765: D/org.apache.http.headers(1529): >> Host: 192.168.1.36
12-03 10:07:29.765: D/org.apache.http.headers(1529): >> User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
12-03 10:07:29.776: D/org.apache.http.wire(1529): >> "[0x0]"
12-03 10:07:29.796: D/org.apache.http.wire(1529): << "HTTP/1.1 200 OK[EOL]"
12-03 10:07:29.805: D/org.apache.http.wire(1529): << "Server: gSOAP/2.8[EOL]"
12-03 10:07:29.816: D/org.apache.http.wire(1529): << "Content-Type: binary/octet-stream[EOL]"
12-03 10:07:29.826: D/org.apache.http.wire(1529): << "Content-Length: 2048[EOL]"
12-03 10:07:29.836: D/org.apache.http.wire(1529): << **"Connection: close[EOL]"**
12-03 10:07:29.887: D/org.apache.http.headers(1529): << HTTP/1.1 200 OK
12-03 10:07:29.896: D/org.apache.http.headers(1529): << Server: gSOAP/2.8
12-03 10:07:29.896: D/org.apache.http.headers(1529): << Content-Type: binary/octet-stream
12-03 10:07:29.906: D/org.apache.http.headers(1529): << Content-Length: 2048
12-03 10:07:29.906: D/org.apache.http.headers(1529): << **Connection: close**
12-03 10:07:29.916: I/System.out(1529): res a4 response
解决方案
10:07:29.746: D/org.apache.http.headers(1529): >> Connection: Keep-Alive
You are requesting keepalive.
10:07:29.836: D/org.apache.http.wire(1529): << "Connection: close[EOL]"
The server is refusing it.
Nothing you can do about that at your end.