转自: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. jqprint网页打印时有页码和URL

    环境360浏览器或IE,解决方法在浏览器->文件->打印,把页码页脚勾选去掉. IE浏览器,打印->页码设置,把页眉页脚都置成空.

  2. 归并排序的JavaScript实现

    思想 这是一种分治算法.将原始数组切分成较小的数组,直到每个小数组只有一项,然后在将小数组归并为排好序的较大数组,直到最后得到一个排好序的最大数组. 代码 function mergeSort(arr ...

  3. Linux 简单按键中断处理流程

    中断处理程序中不能延时.休眠之类的,一定要最快速.高效的执行完. // 功能:申请中断 // 参数1:中断号码,通过宏 IRA_EINT(x) 获取 // 参数2:中断的处理函数,填函数名 // 参数 ...

  4. 获取微信用户openid

    获取微信用户openid http://blog.csdn.net/qq_24800377/article/details/53437040 easywechat 简易演示php代码 http://w ...

  5. FPGA层次结构和复位策略

    FPGA设计中,层次结构设计和复位策略影响着FPGA的时序.在高速设计时,合理的层次结构设计与正确的复位策略可以优化时序,提高运行频率. 设计中,合理的层次结构是我们所追求的. 划分时,按照逻辑分区将 ...

  6. java分割函数split的用法(二)

    package com.b; public class Sysetm { public static void main(String[] args) { String a=new String(&q ...

  7. 2015 浙江省赛B Team Formation (技巧,动归)

    Team Formation For an upcoming programming contest, Edward, the headmaster of Marjar University, is ...

  8. Eclipse格式化代码,自动换行设置

    每次用Eclipse自带的Ctrl+shift+f格式化代码时,如果原来的一行代码大于80列,Eclipse就会自动换为多行,这点个人感觉不是很舒服,简单试了一下,通过以下方式可以修改   1.pre ...

  9. MMU段式映射(VA -> PA)过程分析

    MMU:内存管理单元. CPU寻址的方式: 未使用MMU:CPU发出地址(PA) 直接内存寻址(SDRAM or DDRx). 使用MMU  :CPU发出地址(VA) MMU接收CPU发来的地址 经过 ...

  10. Flask之部署

    5.3 部署 当我们执行下面的hello.py时,使用的flask自带的服务器,完成了web服务的启动.在生产环境中,flask自带的服务器,无法满足性能要求,我们这里采用Gunicorn做wsgi容 ...