转自: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. TabControl控件用法图解

    1.首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个TabControl控件 2.根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在 ...

  2. Velodyne 线性激光雷达数据合成

    坐标系旋转 如果想用字母表示角度,有两个方法: 1.  用三角函数sind(θ4).cosd(θ4).tand(θ4).atand(θ4)进行表示,注意:θ4在输入时是角度,只是没有度数特有的符号(° ...

  3. org/apache/hadoop/hbase/mapreduce/TableReducer:Unsupported major.minor version52.0

    问题详情: 问题原因: <dependency>    <groupId>org.apache.hbase</groupId>    <artifactId& ...

  4. 文件操作open,r,w,a三种模式

    对文件操作的流程: 1.打开文件,得到文件句柄并赋值给一个变量: 2.通过句柄对文件进行操作 3.关闭文件 open("文件名"),默认为只读打开,如果你打开文件,不指定编码集,那 ...

  5. .Net 框架实现AOP(动态代理实现AOP,本文为翻译)

    在上一节,我们将静态实现AOP,但是对于一个大型项目,要想为每个类,每个方法都去实现AOP ,进行日志记录和权限验证似乎是不可能的. 即使可能对于成百上千个类维护,也是很难维护.所以今天的主题就是如标 ...

  6. Ansible之Playbooks的when语句

    在使用ansible做自动化运维的时候,大多数情况下都执行某些任务的时候都需要依赖某个变量的值或者是上一个任务的执行结果.如,根据facts信息中的系统版本相关的信息来确定使用哪种包管理器安装软件.A ...

  7. 安装glibc-2.14

    下载glibc-2.14.tar.gz 解压: [root@jrgc130 software]# tar xf glibc-2.14.tar.gz [root@jrgc130 software]# c ...

  8. VMware虚拟机安装Centos7详细步骤过程(图文)[转载]

    Centos7官网下载地址:https://www.centos.org/download/ 图文安装步骤转载地址: https://www.jianshu.com/p/ce08cdbc4ddb?ut ...

  9. BurpSuite系列(九)----Comparer模块(比较器)

    一.简介 Burp Comparer在Burp Suite中主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别.使用中的场景可能是: 1.枚举用户名过程中,对比分析登陆成功和失败时,服务器 ...

  10. window 下编译cef 内核 加入mp3/mp4 支持

    下载 depot_tools 解压,加入到环境变量 进入cmd(管理员)运行 gclient 获取 python和git,svn,设置python环境变量 创建新文件夹 mkdir chromium ...