HttpClient 操作总结

1、HttpClient4.3和之前版本设置超时(set timeout)区别:

  参考:http://my.oschina.net/u/577453/blog/173724

  解析:如果不设置超时的话,可能会使得get的时间很久,造成程序假死(挂着不动不结束)

  最近用到了HttpClient写微博爬虫,发现创建一个HttpClient对象吧,每一个版本的都不一样,

  3.X是这样的


1

HttpClient httpClient=new DefaultHttpClient();

  4.3是这样的


1

CloseableHttpClient httpClient = HttpClients.createDefault();

  这些改动还不是很大,但是超时设置,HttpClient有三种超时设置,就改变不少了,讲一些最简单最易用的超时设置方法。

  这是个3.X的超时设置方法  


1

2

3

HttpClient client = new HttpClient();

client.setConnectionTimeout(30000); 

client.setTimeout(30000);

  


1

2

HttpClient httpClient= new HttpClient(); 

httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

  4.X版本的超时设置(4.3后已过时)


1

2

3

HttpClient httpClient=new DefaultHttpClient();

httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//连接时间

httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,2000);//数据传输时间

  4.3版本超时设置


1

2

3

4

5

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpGet httpGet=new HttpGet("http://www.baidu.com");//HTTP Get请求(POST雷同)

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//设置请求和传输超时时间

httpGet.setConfig(requestConfig);

httpClient.execute(httpGet);//执行请求

  更重要的是,4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时),亲身泪奔经历过啊!。

时间: 2024-11-06 13:28:59

HttpClient 操作总结的相关文章

Java模拟POST表单提交HttpClient操作

public static void Login() { String url = "http://www.***.com/login"; PostMethod postMethod = new PostMethod(url); // 填入各个表单域的值 NameValuePair[] data = { new NameValuePair("account", "[email protected]"), new NameValuePair(&qu

HttpClient的替代者 - RestTemplate

需要的包 ,除了Spring的基础包外还用到json的包,这里的数据传输使用json格式 客户端和服务端都用到一下的包 <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</v

Windows Phone 十六、HttpClient

HttpClient 对象也可以实现网络请求 相对于 HttpWebRequest 对象来说,HttpClient 操作更简单,功能更强大 HttpClient 提供一系列比较简单的API来实现基本的请求 同时也支持身份验证和异步操作 注意 Windows Runtime 平台中有两个 HttpClient 类型,调用方式几乎相同,以下内容使用 Windows.Web.Http 中的 HttpClient 发送数据格式 HttpFormUrlEncodedContent HttpMultipar

solr 6.1 服务端 tomcat 搭建及调用

一.下载 apache solr6.1.0 最新版本zip,解压缩生成一个solr6.1.0文件夹 二.安装 1.在d:/projects下新建一个solr 2.把solr6.1.0/server/solr复制到d:/projects/solr/下,并把文件夹改为home,即d:/projects/solr/home. 3.复制一个tomcat文件夹在d:/projects/下,并改名为:d:/projects/server 4.把solr-6.1.0\server\solr-webapp\we

Simsimi 小黄鸡机器人最新无限制接口api simsimi机器人接口api 微信公众号

一.什么是Simsimi? simsimi公司是提供智能服务,其中一个服务是simsimi聊天机器人服务,每天有超过百万的用户聊天,国内最大的搜索引擎——百度的产品siri使用的就是simsimi提供的api. 你可以在网址http://www.simsimi.com/talk.htm# 进行体验 SimSimi inc. is specialized in collective intelligence service. All kinds of services we provide gen

使用eclipse阅读java源码

很多时候想要阅读java源代码(无论是jdk自带的,还在第三方的),但是我们使用的jar包都是编译好的class包,无法在eclipse中直接打开,此时需要下载源码包. 本文以以下代码为例,HttpClient是apache提供的使用http协议访问网络资源的工具,功能比JDK 的 java.net 包提供的方法更强大.比如我想阅读HttpClient具体封装了哪些方法,都如何实现的呢? HttpClient httpClient = new HttpClient(); 操作步骤如下: 第一步:

SpringBoot + Kubernetes云原生微服务实践 - (6) 微服务测试设计和实践

微服务测试设计和实践 微服务测试的最大挑战:依赖.解决方案是采用分而治之的策略:a.先针对每一个微服务进行隔离测试,在对每一个微服务进行测试的时候再按照分层的方式进行隔离测试:测试过程中采用mock等技术来隔离依赖简化测试:b.在确保每个微服务通过隔离测试后,再进行整个应用的端到端集成测试 微服务测试分类和技术 Spring(Boot)应用分层 controller 服务的对外接口层,负责接收请求和发送响应 中间涉及到消息,一般是json跟对象间的转换,术语叫做序列化,一般由框架封装 控制器需要

Android学习笔记:利用httpclient和AsyncTask 发起网络http post操作

1.在android4中,发起网络http操作,不能在Activity的事件(即主线程)中进行,必须在单独的线程中操作. 另外进行网络操作,需要在manifest文件中增加如下的权限: <uses-permission android:name="android.permission.INTERNET" /> 2.下面给出代码事例 public void loadData() { new AsyncTask<String, Void, String>() { @

HttpClient, 使用C#操作Web

我们知道, .Net类库里提供了HttpWebRequest等类,方便我们编程与Web服务器进行交互. 但是实际使用中我们经常会遇到以下需求,基础类里没有直接提供相应的功能(WebClient类包含这些功能,只是用起来稍微麻烦一点--谢谢网友东吴居士的提醒): 对HttpWebResponse获取的HTML进行文字编码转换,使之不会出现乱码; 自动在Session间保持Cookie,Referer等相关信息; 模拟HTML表单提交; 向服务器上传文件; 对二进制的资源,直接获取返回的字节数组(b