如何解决tracert请求超时时的HttpException异常

HttpClient异常处理手册_小组_ThinkSAAS
HttpClient异常处理手册
HttpClient异常处理手册
HttpClient的使用者在执行HTPP方法(GET,PUT,DELETE等),可能遇到会两种主要类型的异常:
并不是所有的异常都会传播给HttpClient的用户。HttpClient内部使用的异常在下文中将会标记为内部使用
HTTP传输安全
自动异常恢复
自定义异常处理
传输异常都是诸如不可靠的连接到输入/输出失败或者未能在给与的时间内执行完HTPP方法(套接字超时)。一般来说,传输异常是非致命的错误,通过多次执行方法能够恢复。在非幕等方法中恢复特别需要注意(详细信息请参考HTTP传输安全)。
java.io.IOException
HttpCinet一般的传输异常可以用标准JAVA中 java.io.IOException或者其子类java.net.SocketException,java.net.InterruptedIOException来表示。
为了规划化输入/输出异常类,HttpClient定义多种自定义传输异常用来传递HttpClient特定的信息。
mons.httpclient.NoHttpResponseException
java.io.IOException
+- mons.httpclient.NoHttpResponseException
在某些情况下,由于服务器负载过大,服务器能接受到请求,但是没有能力去处理,像工作线程这样限制性资源就是一个很少的例子。这可能会导致服务器丢弃与客户端的连接,而不会给予任何回应。HttpClient遭遇这种情况时,抛出NoHttpResponseException 。在多数情况下,通过重试能够从此异常中恢复。
mons.httpclient.ConnectTimeoutException
java.io.IOException
+- java.io.InterruptedIOException
这种异常表示在给定的时间HttpClient与目标服务器或代理服务器建立起连接。
mons.httpclient.ConnectionPoolTimeoutException
java.io.IOException
+- java.io.InterruptedIOException
+- mons.httpclient.ConnectTimeoutException
+- mons.httpclient.ConnectionPoolTimeoutException
只有在使用多线程连接管理器时,才可能发生此异常。此异常表示在给定的时间从连接池中获取一个空闲连接失败。
mons.httpclient.HttpRecoverableException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.HttpRecoverableException
废弃,任何标准HttpClient类中不会抛出此异常。
在HTTP规范的解释中,协议异常通常是由客户端与服务器(web服务器或是代理服务器)的不匹配导致的逻辑错误。如果不对客户端的请求或服务器做出调整,HttpClient此异常不能恢复。HTTP规范的多个方面允许不同甚至是相互冲突的解释。HttpClient能偶采用配置来支持从非常宽松到非常严格的HTTP规范的遵从度。
mons.httpclient.HttpException
java.io.IOException
+- mons.httpclient.HttpException
HttpException在HttpClient中代表一个抽象逻辑错误,一般情况下,程序不能从这种错误中恢复。
mons.httpclient.ProtocolException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
ProtocolException表示一个HTTP规范的冲突,值得注意的是HTTP代理服务器和HTTP服务器有着不同的HTTP规范的支持度级别。通过配置HttpClient更宽松可以让程序从非致命的协议冲突的HTTP协议异常恢复。
mons.httpclient.auth.MalformedChallengeException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
+- mons.httpclient.auth.MalformedChallengeException
MalformedChallengeException表示一个身份认证凭证的某些方面在给定的身份认证的上下文中是无效或者非法的。
mons.httpclient.auth.AuthenticationException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
+- mons.httpclient.auth.AuthenticationException
AuthenticationException用来表示身份认证过程中的失败。通常,认证异常不会传递给调用者,只在内部处理使用。
mons.httpclient.auth.AuthChallengeException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
+- mons.httpclient.auth.AuthenticationException
+- mons.httpclient.auth.AuthChallengeException
HttpClient无法响应服务器发送的任何身份验证质询时,AuthenticationException将会抛出。
mons.httpclient.auth.CredentialsNotAvailableException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
+- mons.httpclient.auth.AuthenticationException
+- mons.httpclient.auth.CredentialsNotAvailableException
CredentialsNotAvailableException表明响应身份验证质询的要求的证书不可用。
mons.httpclient.auth.InvalidCredentialsException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
+- mons.httpclient.auth.AuthenticationException
+- mons.httpclient.auth.InvalidCredentialsException
InvalidCredentialsException表明响应身份验证质询的要求的证书被服务器拒绝。
mons.httpclient.cookie.MalformedCookieException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
+- mons.httpclient.cookie.MalformedCookieException
MalformedCookieException表示cookie的某些方面在给定的HTTP会话上下文中是无效或者非法的。有多种不兼容cookie规范,因此,cookie合法性建立在用于分析的特定cookie规范的上下文中和验证服务器发送cookie头消息。如果应用程序需要处理不常见的cookie规范定义的cookie,请查看cookie文档获取更多的信息。
mons.httpclient.RedirectException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.ProtocolException
+- mons.httpclient.RedirectException
RedirectException表示一个无效的重定向响应导致了HTTP规范冲突。如果使用HttpClient的应用程序就重定向需要更多的宽松度的话,它可以选择禁用自动重定向处理和实现自定义重定向策略。
mons.httpclient.URIException
java.io.IOException
+- mons.httpclient.HttpException
+- mons.httpclient.URIException
URIException表示请求的URL不符合URI规范。
HTTP传输安全
有必要了解是HTTP协议并不适用于所有类型的应用程序。HTTP是一个简单的面向requestre/sponse的协议,协议最初设计为支持静态或动态生成的内容检索。它从未打算支持事务性操作。例如,如果HTTP服务器成功接收和处理该请求,HTTP服务器会考虑其履行契约的一部分,生成响应和发送状态码回客户端。如果客户端由于读取超时,请求取消,或者系统崩溃而导致读取整个响应失败,服务器将不试图回滚事务。如果客户端重新发送同一请求,服务器将最终无可避免再一次执行同一事务。在某些情况下,将有可能导致应用程序数据的损坏或程序状态的不一致。
即使HTTP从未被设计为支持事务性处理,它还是可以用作满足某些条件关键应用程序传输协议。为确保HTTP传输层安全系统必须确保应用层上的HTTP方法是幕等的。
HTTP/1.1规范定义幕等方法为:
Methods can also have the property of"idempotence"in that (aside from error or expiration issues) the side-effects of N & 0 identical requests is the same as for a single request.
换句话说,应用程序应该确保它准备处理同一个的方法的多次执行带来的影响。这可以做到的,例如,通过提供一个唯一的事务id和通过其他方式避免执行相同的逻辑操作。
需要注意的,这是问题并非特定于HttpClient。基于浏览器的应用程序在涉及到非幕等HTTP方法时,也会面临同样的问题。
自动异常恢复
默认情况下HttpClient尝试从异常中自动恢复。默认的自动恢复机制仅限于少数的几个已知安全的异常。HttpClient不会尝试从任何逻辑或是HTTP协议错误(HttpException派生的异常类)中恢复。
HttpClient将最多5次自动重试因传输异常失败的方法,虽然请求仍被传输到目标服务器(也就是说,请求尚未完全传送到服务器)。
HttpClient将最多自动重试那些方法5次,直到请求完全传送到服务器,但该服务器没有响应的HTTP状态代码(服务器只是简单的丢弃连接而没有发回任何响应)。在这种情况下则假定请求未被服务器处理和应用程序状态没有改变。如果web服务器应用程序目标的假设不成立,那么极力建议您提供自定义的异常处理程序。
自定义异常处理类
为了启用自定义异常的恢复机制应提供HttpMethodRetryHandler接口的实现。
HttpClient client = new HttpClient();
HttpMethodRetryHandler myretryhandler = new HttpMethodRetryHandler() {
public boolean retryMethod(
final HttpMethod method,
final IOException exception,
int executionCount) {
if (executionCount &= 5) {
// Do not retry if over max retry count
if (exception instanceof NoHttpResponseException) {
// Retry if the server dropped connection on us
if (!method.isRequestSent()) {
// Retry if the request has not been sent fully or
// if it's OK to retry methods that have been sent
// otherwise do not retry
GetMethod httpget = new GetMethod("/");
httpget.getParams().
setParameter(HttpMethodParams.RETRY_HANDLER, myretryhandler);
client.executeMethod(httpget);
System.out.println(httpget.getStatusLine().toString());
} finally {
httpget.releaseConnection();
PHP开发框架
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
官方1群:【已满】
让ThinkSAAS更好,把建议拿来。public static String getJsonOfArray(String url) throws Exception
&&& {
&&&
String JsonStr =
&&&
if(url.contains("?")){
&&&
url +="&type=m";
&&&
}else{
&&&
url +="?type=m";
&&&
HttpGet httpRequest = new HttpGet(url);
HttpClient client = DefaultClient.getInstance();
client.getParams().setParameter("http.socket.timeout",2000);//设置请求服务器超时时间&& 不起作用
client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
HttpResponse httpResponse = client.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK)
JsonStr = EntityUtils.toString(httpResponse.getEntity());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
Log.i("XX","---JsonStr---"+JsonStr);
&&&&&&& return JsonS
采纳的答案
我的,希望有用
public class GetJsonData {
public static String getConnectionData(String url) {
StringBuilder sb=new StringBuilder();
HttpClient client=new DefaultHttpClient();
HttpParams params=client.getParams();
HttpGet get=new HttpGet(url);
HttpResponse response=client.execute(get);
HttpConnectionParams.setConnectionTimeout(params, 3000);
HttpConnectionParams.setSoTimeout(params, 5000);
HttpEntity entity=response.getEntity();
if(entity!=null){
BufferedReader reader=new BufferedReader(new InputStreamReader(entity.getContent(),"utf-8"),8192);
String line=
while((line=reader.readLine())!=null){
sb.append(line+"\n");
reader.close();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return sb.toString();
已解决问题
未解决问题一晚上了 从九点多到现在一直是:请求已超时,请重试。(Code 3006) 请问还怎么玩 百度了N种方案一种都解决不了。不要说我网络有问题 玩WOW一点问题都没!~
帖数:81,869
建议您可以先尝试[url=.cn/support/zh/article/716]优化网络连接[/url],另外,若您是国外用户,建议使用代理或者VPN,再查看下是否能够进入游戏了。(为了您账号安全考虑,请务必注意杀毒。)若方便的话请进行下[url=.cn/forum.php?mod=viewthread&tid=537082]网络测试[/url],并将测试结果以附件形式,发送至[email].cn[/email]邮箱。邮件标题为:【玩家测试】+战网账号。
打我会变丑
我也是诶,我还说要买游戏来着
暴力威胁。我们将严肃对待此类行为,并会上报有关部门。
发布的主题中包含其他玩家的个人信息。包括实际地址、邮箱地址、电话号码及不当的照片和/或视频。
骚扰或歧视性用语。此类言辞将不允许出现。
现实生活中的威胁
失效的链接
阐述理由(最多256字)&&&您需要以后才能回答,未注册用户请先。请教CXF 如何捕获请求超时和响应超时异常
[问题点数:40分,结帖人zhouhaochen]
请教CXF 如何捕获请求超时和响应超时异常
[问题点数:40分,结帖人zhouhaochen]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 网络请求超时解决 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信