httpClient请求超时的设置以及处理

设置超时的起因

在我们的httpClient请求,当我们的请求地址错误或者请求无法在正常时间内连接并且得到反馈抑或是我们的服务器正处在关闭维修的状态

,这时,我们发送httpClient请求的客户端会因为线程中一直在等待我们请求的反馈信息而造成进程阻塞。如果这时候我们不做任何处理会造成客户端无反应(在安卓系统中会造成手机应用的崩溃),这时候,我们就需要设置请求httpClient的超时时间来解决这个麻烦。

在我们的httpClient请求类中生命一个变量来做httpClient请求

<span style="font-size:14px;"> HttpClient httpClient = new DefaultHttpClient();</span>

在我们的get方法中(本文以get请求为例)对我们的请求对象进行设置

<span style="white-space:pre">	</span>// 请求超时(6秒)
        httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 6000);
        // 读取超时<span style="font-family: Arial, Helvetica, sans-serif;">(6秒)</span>
        httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 6000);

这个时候,当我们的请求或者读取超过6秒的时候,我们的httpClient请求会报出ConnectTimeoutException这个异常

这时候,我们需要在我们的请求代码中捕获我们的异常,例:

<span style="white-space:pre">	</span>try{
            // 创建HttpGet对象。
            HttpGet get = new HttpGet(urlAddress);
            System.out.println(urlAddress+"============");
            // 发送GET请求
            HttpResponse httpResponse = httpClient.execute(get);
            // 如果服务器成功地返回响应
            if (httpResponse.getStatusLine()
                    .getStatusCode() == HttpStatus.SC_OK)
            {
                // 获取服务器响应字符串
                String result = EntityUtils.toString(httpResponse.getEntity());
                return result;
            }
            else {
                // 如果服务器失败返回响应数据"error"
                return "error";
            }
        }catch(ConnectTimeoutException e){
            // 捕获超时异常 并反馈给调用者
            e.printStackTrace();
            return "connection time out";
        }finally{
            // 关闭HttpClient
            httpClient.getConnectionManager().shutdown();
        }

当我的请求超时的时候,我的该请求类会捕获这个异常,并且返回"connection time out"这个字符串

我们此时只需要在我们调用httpClient请求的地方判断我们的返回信息是否为"connection time out",

如果是,那就证明我们的请求超时了,此时就可以做相应的超时处理了,如安卓app可以调用toast来在手机中显示"您的请求以超时"

时间: 2024-10-09 17:40:53

httpClient请求超时的设置以及处理的相关文章

ASP.NET 页面请求超时时间设置 Server.ScriptTimeOut executionTimeout

ASP.NET 页面请求超时时间(页面后台程序执行时间)默认值为 110 秒(在 .NET Framework 1.0 版和 1.1 版中,默认值为 90 秒) 即: Server.ScriptTimeout = 110(HttpServerUtility.ScriptTimeout = 110) System.Web.Configuration.HttpRuntimeSection().ExecutionTimeout.ToString() = 00:01:50(110 秒) 方法一:设置 S

模拟HTTP请求超时时间设置

HTTP请求有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间(请求资源超时时间). 使用curl命令行 连接超时时间用 --connect-timeout 参数来指定 数据传输的最大允许时间用 -m 参数来指定 例如: curl --connect-timeout 10 -m 20 "http://XXXXXXX" 连接超时的话,出错提示形如: curl: (28) connect() timed out! 数据传输的最大允许时间超时的话,出错提示形如: curl:

Sipdroid实现SIP(六): SIP中的请求超时和重传

目录 一. Sipdroid的请求超时和重传 二. SIP中超时和重传的定义 三. RFC中超时和重传的定义 一. Sipdroid的请求超时和重传 Sipdroid实现SIP协议栈系列, 之前的文章仅涉及了SIP消息的基本概念, 比如: 请求型消息: INVITE, REGISTER... 应答型消息: 100 Trying, 180 Ringing, 200 OK, BYE, ACK... 携带SDP信息 携带认证信息 这篇文章更深入一些, 介绍了SIP作为一种可靠传输, 涉及到的超时和重传

20180907_网络差_天安微信token请求超时

一.异常现象 token请求时,显示请求超时. 二.原因分析 这个异常有如下几个原因: (1)服务器没有开通  qyapi.weixin.qq.com 的外网权限 (2)服务器网络太慢 三.异常解决 1.验证外网访问权限 在服务器使用 curl 命令,访问对应网址, 发现服务器偶尔能请求成功. 能请求成功说明服务器外网权限是有的.但是只能偶尔成功,说明服务器网速不稳定. 2.网速慢时接口访问 当服务器网络情况差时,如果想成功请求微信接口,那只能延长请求超时时间了. 当我把请求超时时间设置为1分钟

angular学习笔记(二十六)-$http(4)-设置请求超时

本篇主要讲解$http(config)的config中的timeout项: $http({ timeout: number }) 数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错误 demo: html: <!DOCTYPE html> <html ng-app = 'HttpGet'> <head> <title>18.4 $http(2)</title> <meta charset="utf-8"

android 设置网络请求超时

UI界面更新必须在ui线程中 不能在ruanable线程中操作ui 可以发送消息利用handler来更新ui    private void load() {        LoadDate load = new LoadDate();        load.execute("http://h.hiphotos.baidu.com/image/w%3D310/sign=1bc9c0da38292df597c3aa148c305ce2/c83d70cf3bc79f3d77fbe1c5b8a1cd

ASP.NET Core MVC请求超时设置解决方案

设置请求超时解决方案 当进行数据导入时,若导入数据比较大时此时在ASP.NET Core MVC会出现502 bad gateway请求超时情况(目前对于版本1.1有效,2.0未知),此时我们需要在项目web.config配置文件中进行如下设置即可: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers>

iOS开发中如何设置请求超时时间

1 NSString *baseUrl; 2 NSURL *url = [NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 3 NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInter

httpclient的post请求超时

前两天做项目,使用httpclient的post请求超时,检查代码也没问题.后来偶然在看日志的时候才发现问题所在. 现象 当post请求的返回数据少的时候应用没问题.当post请求返回的数据量在debug.当post请求的返回数据少的时候应用没问题.当post请求返回的数据量u大的时候应用就超时. 排查 经过debug发现post返回的数据量也就800k左右,还没有达到web容器限定值,所以不是容器的限制.把请求应用和返回应用部署在同一台服务器,所以不是网速的问题.在看控制台的时候发现[http