转自:http://www.cnblogs.com/carlosk/archive/2013/03/12/2956502.html

前几天服务器端的产品经理跑来问我是否有做请求超时和响应超时的处理。我一脸迷茫,直接就说:我做了开发这么久,从不知道什么是请求超时什么是响应超时。

后来我静下来仔细想想,确实应该有请求超时和响应超时这两个概念,不然会出很多问题的。
然后花了一些时间仔细查了下资料。确实是如此。
 
ConnectException : 指的是服务器请求超时
SocketTimeoutException:指的是服务器响应超时
可以在代码里设置
 //请求超时
        httpclient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,reqTimeout);
        //响应超时
        httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, resTimeout);
 
大家如果以后做安全级别高的项目可能会碰到我这样的问题。我说明下。
当一笔交易,如果请求失败,那可以允许用户再次提交。
如果是响应失败,那就说明用户提交成功了,应该防止用户再次提交

HttpClient在使用中有两个超时时间 区别

HttpClient在使用中有两个超时时间。

一、连接超时:connectionTimeout    1.指的是连接一个url的连接等待时间。    2.设置方法为:

Java代码

HttpClient client = new HttpClient();

HttpMethod method = new GetMethod("http://test.com");

client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);

3.测试的时候,将url改为一个不存在的url:“http://test.com”    4:超时时间3000ms过后,系统报出异常。      org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 3000 ms 二、读取数据超时:soTimeout    1.指的是连接上一个url,获取response的返回等待时间    2.设置方法伟:

Java代码

HttpClient client = new HttpClient();

HttpMethod method = new GetMethod("http://localhost:8080/firstTest.htm?method=test");

client.getHttpConnectionManager().getParams().setSoTimeout(2000);

3.测试的时候的连接url为我本地开启的一个url,http://localhost:8080/firstTest.htm?method=test,在我这个测试url里,当访问到这个链接时,线程sleep一段时间,来模拟返回response超时。

Java代码

@RequestMapping(params = "method=test")

public String testMethod(ModelMap model) {

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("call testMethod method.");

model.addAttribute("name", "test method");

return "test";

}

4:将读取response返回超时时间设的时间比那个sleep时间短之后,运行程序给出异 常:java.net.SocketTimeoutException: Read timed out 提醒:以后再写httpClient这两个超时时间一定要加上,不加就很可能悲剧的了。

HttpClient connectionTimeout的更多相关文章

  1. SpringCloud系列——Config 配置中心

    前言 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持.有了配置服务器,您就有了一个中心位置来管理跨所有环境的应用程序的外部属性.本文记录实现一个配置中心.客 ...

  2. SpringCloud系列——Feign 服务调用

    前言 前面我们已经实现了服务的注册与发现(请戳:SpringCloud系列——Eureka 服务注册与发现),并且在注册中心注册了一个服务myspringboot,本文记录多个服务之间使用Feign调 ...

  3. org.apache.http.client.HttpClient; HttpClient 4.3超时设置

    可用的code import org.apache.commons.lang.StringUtils;import org.apache.http.HttpEntity;import org.apac ...

  4. Android--Apache HttpClient

    前言 上一篇文章介绍了使用HttpURLConnection来完成对于HTTP协议的支持.现在介绍一个新的方式来访问Web站点,那就是HttpClient. HttpClient是Apache开源组织 ...

  5. HttpClient I/O exception (java.net.SocketException) caught when processing request: Connect

    转自:http://luan.iteye.com/blog/1820054 I/O exception (java.net.SocketException) caught when processin ...

  6. httpclient 发送一个请求

    httpclient版本 4.1 发送一个post请求 public static JSONObject post(String url,JSONObject json){ HttpClient cl ...

  7. Java HttpClient使用小结

    httpclient是apache的一个项目:http://hc.apache.org/ 文档比較完好:http://hc.apache.org/httpcomponents-client-ga/tu ...

  8. [转]HttpClient的超时用法小记

    HttpClient的超时用法小记 HttpClient在使用中有两个超时时间,是一直接触和使用的,由于上次工作中使用httpClient造成了系统悲剧的情况,特地对它的两个超时时间进行了小小的测试, ...

  9. 使用单例模式实现自己的HttpClient工具类

    引子 在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient 来方便我们使用各种Http服务.你可以把HttpCli ...

随机推荐

  1. php excel 设置单元格格式为文本格式

    学习源头:https://www.cnblogs.com/php-linux/p/6179442.html 解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制 ...

  2. 控制台执行CI方法

    执行方法:进入到ci放入口文件目录 执行 php index.php 控制器 方法 #php index.php home index

  3. php设计模式之单例(多例),注册器,观察者模式

    单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量.如模式名称,单例只能实例化一次,只有一个对象,多例模式可以多次实例化. 基于Singleton的特性,我们 ...

  4. Spring缓存源码剖析:(一)工具选择

    从本篇开始对Spring 4.3.6版本中Cache部分做一次深度剖析.剖析过程中会对其中使用到的设计模式以及原则进行分析.相信对设计内功修炼必定大有好处. 一.环境及工具 IntelliJ IDEA ...

  5. git版本控制-详细操作

    - git,软件帮助使用者进行版本的管理 阶段一git 命令: git init 初始化 git config --global user.email "you@example.com&qu ...

  6. LT3756/LT3756-1/LT3756-2 - 100VIN、100VOUT LED 控制器

    LT3756/LT3756-1/LT3756-2 - 100VIN.100VOUT LED 控制器 特点 3000:1 True Color PWMTM调光 宽输入电压范围:6V至 100V 输出电压 ...

  7. SQL SERVER常用的统计用法

    --查询各个状态下总数SET statistics time on Go SELECT END ) AS Q1, END ) AS Q2, END ) AS Q3, END ) AS Q4, END ...

  8. Java微信公众平台开发(十四)【番外篇】--微信web开发者工具使用

    转自:http://www.cuiyongzhi.com/post/58.html 为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信 ...

  9. Swagger SpringBoot 集成

    说明:Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集 ...

  10. [JBPM3.2]TaskNode的signal属性详解

    TaskNode节点的signal属性决定了任务完成时对流程执行继续的影响,共有六种取值:unsynchronized,never,first,first-wait,last,last-wait.默认 ...