gpt4 book ai didi

android - Android 上的 HttpClient : NoHttpResponseException through UMTS/3G

转载 作者:IT老高 更新时间:2023-10-28 23:31:02 25 4
gpt4 key购买 nike

我的 android 应用程序使用 HttpClient 来访问我的 servlet部署在我的 Tomcat 上。它安装在我的 HTC Magic 上。

如果我在连接到 Wifi 时启动它:它可以工作。如果我在连接到 3G(GSM 数据网络)时启动它:它不起作用,但可以访问我的 servlet。换句话说,我的手机似乎从来没有得到回应:

Technical problem while receiving response.
org.apache.http.NoHttpResponseException: The target server failed to respond
at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:85)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:179)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:410)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

如果我通过 3G 使用 Web 浏览器激活与我的 servlet 打包的测试 HTML 页面,它会成功到达同一个 servlet(页面收到响应)。

如何调试 HttpClient 或要求它转储所有内容?

有人知道发生了什么吗?

最佳答案

我也遇到了这个问题。它只是偶尔发生,通常是在初始 http 请求中。随后的请求将正常工作。添加 setUseExpectContinue 似乎不起作用。

在我的情况下,解决方案是添加一个重试处理程序,该处理程序会在特定异常上重试请求:

        HttpProtocolParams.setUseExpectContinue(client.getParams(), false);

HttpRequestRetryHandler retryHandler = new HttpRequestRetryHandler() {

public boolean retryRequest(IOException exception, int executionCount,
HttpContext context) {
// retry a max of 5 times
if(executionCount >= 5){
return false;
}
if(exception instanceof NoHttpResponseException){
return true;
} else if (exception instanceof ClientProtocolException){
return true;
}
return false;
}
};
client.setHttpRequestRetryHandler(retryHandler);

关于android - Android 上的 HttpClient : NoHttpResponseException through UMTS/3G,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com