Atitit.http httpclient实践java c# .net php attilax总结

1. Navtree》》 net .http1

2. Httpclient理论1

2.1. 自动url转向的控制1

3. Java里面的httpclient1

4. C# .net的httpclient2

4.1.1. .NET 4.5(C#):2

4.2. 对COOKIE和SEIION支持区别3

4.3. 用户对是否自动url转向的控制3

4.4. 对用户代理服务器的支持3

5. Php的httpclient3

6. Node.js4

7. solu解决问题::4

8. ref参考资料4

8.1.1. C# 中使用System.Net.Http.HttpClient 模拟登录博客园 (GET..._推酷5

1. Navtree》》 net .http

2. Httpclient理论

要设置timeout,不然有些io api是阻塞性的,导致不能完成。stream.read

Ssl...

Useragent,

Encode:解决编码乱码

cookie的自动管理

2.1. 自动url转向的控制

代理的支持。。。

复制句柄泄漏 • 句柄泄露(CLOSE_WAIT半连接关闭)

 

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:[email protected]

转载请注明来源: http://www.cnblogs.com/attilax/

 

3. Java里面的httpclient

要用apache httpclient4.5了,jdk里面儿的太兰兰...

由于问题都出现在Apache Httpclient 4.x上, 因此我们先看看网上是否也有类似的案例场景.
• socket阻塞 
  参考了相关文章, 基本认可博文<<Apache HttpClient 没有设置time out导致应用长时间阻塞的问题>>中的说法: socket没有设置超时选项导致.
  具体解读, 可以理解为服务端对端不回应, 或者因网络异常, 导致socket一直阻塞于读. Apache HttpClient默认设置的socket为SO_TIMEOUT为0, 既无限等待.
  结合之上的代码分析, 确实忽视了超时设定, 陷入了Apache HttpClient隐藏很深的坑中. ^_^!
  解决方案是:为对应的httpclient设置超时即可.


1

2

3


httpClient = new DefaultHttpClient();

httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);

httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000);

  这样阻塞的问题就可以暂时告一段落了. 
• 句柄泄露(CLOSE_WAIT半连接关闭)
  同样参考了博文: <<HttpClient容易忽视的细节——连接关闭>>与<<HttpClient 与 Close_Wait>>. 
  按apache httpclient的设计理念, 当http client 处于高并发时, 默认机制导致的CLOSE_WAIT会影响服务的可用性.
  对比之上的代码, 确实没有找到主动关闭连接的代码.
Apache HttpClient本身变动多, 接口又杂, 以至每个版本的解决方案又有所不同, 有些让人眼花缭乱.
  比较一致的解决方式是,在处理完单个请求后, 调用如下清理代码:


1

2


httpmethod.releaseConnection();

client.getConnectionManager().shutdown();

  但不管怎么说, Apache HttpClient 4.x的关闭机制, 还是值得大书特书的, 这边显得简略, 希望以后有机会能深入研究.

4. C# .net的httpclient

4.0.1. .NET 4.5(C#):

System.Net.Http .HttpClient简

.net2.0  System.Net.WebClient 类

HttpWebRequest  System.Net.HttpWebRequest

4.1. 对COOKIE和SEIION支持区别

WebClient不具持续性,因此不支持cookie和session,具体说来就是,常见的管理系统中,一般都有登录页和管理页,在登陆页输入用户名和密码,在管理页显示登录页输入的用户名,但是,WebClient实现不了这样的效果,在第一次请求登录页时,验证成功之后,WebClient不会保存http响应报文中的SetCookie,更不会设置下一次http请求报文的Cookie,因此跳转到管理页后,在管理页时接收不到存相应的cookie,因此,webclient更适用于多次请求没有联系的请求,而WebRequest则相反

4.2. 用户对是否自动url转向的控制

WebClient不支持

WebRequest支持(HttpWebRequest有AllowAutoRedirect属性)

4.3. 对用户代理服务器的支持

WebClient不支持

WebRequest支持(HttpWebRequest有UserAgent属性)

WebClient类使用起来比较简单,但是它的功能非常有限,特别是不能使用它提供身份验证证书。,WebClient没有具体的支持。由于WebClient是通用的类,主要用于处理发送请求和接收响应的协议(例如HTTP、FTP等)。它不能处理任一协议的任何附加特性,例如专用于HTTP的cookie。如果想利用这些特性,就需要使用System.Net命名空间中以WebRequest类和

5. Php的httpclient

使用curl_

在php里,要想打开网页URL获得网页内容,比较常用的函数是fopen()和file_get_contents()。如

通过上面两个例子的对比,可以看出使用file_get_contents()打开URL,也许是更多人的选择,因为其比fopen()更简单便捷。

6. Node.js

Node.js:使用request模块下载文件

var request = require(‘request‘);

var stream = fs.createWriteStream(filename);

request(uri).pipe(stream).on(‘close‘, callback);

7. solu解决问题::

java.io.EOFException: SSL peer shut down incorrectly

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

javax.net.ssl.SSLKeyException: RSA premaster secret error

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: 
              sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid 
              certification path to requested target

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: KeyUsage does not allow key encipherment

8. ref参考资料

Node.js:使用request模块下载文件 - ProgramChangesWorld的专栏 - 博客频道 - CSDN.NET.html

8.0.1. C# 中使用System.Net.Http.HttpClient 模拟登录博客园 (GET..._推酷

httpclient原理

WebClient和HttpWebRequest区别 - Hello World - 博客频道 - CSDN.NET.html

fopen()和file_get_contents()打开URL获得网页内容的用法区别 - PHP编程_卡卡网.html

Apache HttpClient使用之阻塞陷阱 - mumuxinfei - 博客园.html

java之httpclient的一些破事 - wulei_longhe的专栏 - 博客频道 - CSDN.NET.html

Atiend

时间: 2024-10-17 00:27:34

Atitit.http httpclient实践java c# .net php attilax总结的相关文章

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzip 大概流程.. 1 3. 读文件名称ok,但是cant读取到input说NPE.. 2 4. Ant1.8.2.jar 2 5. #---详细code 2 6. 参考 4 1.  Jdk zip 跟apache ant zip 下面实现的功能是zip文件中的图像文件解压到当前目录下,用jdk自带的处

atitit.人脸识别的应用场景and使用最佳实践 java .net php

atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景 1 2. 框架选型 JNI2OpenCV.dll and JavaCV 1 3. Url api 法 1 4. 使用法 2 5. 问题解决 2 6. 测试main修改 2 7. 主要的code 2 8. 参考 3 1. 人脸识别的应用场景 图片库清理...不个要保持的图片(有人脸/ngaiz,呵呵)跟个马用的图片分割开... 人物识别::::  不同样的人脸可以识别... 物体识别::: O

atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php

atitit.压缩算法 ZLib ,gzip ,zip   最佳实践  java .net php 1. 压缩算法的归类::: 纯算法,带归档算法 1 2. zlib(适合字符串压缩) 1 3. gzip( 适合单个的文件) 1 4. zip 2 5. java jdk 给zlib,gzip,zip的支持 2 6. zlib---gzip 压缩在后长度比较 2 7. 别的bzip,,tar 2 8. 参考 3 1. 压缩算法的归类::: 纯算法,带归档算法 ZIP.RAR等归档算法 ZLib可以

atitit.ajax 最佳实践跟框架选型 o99

atitit.ajax 最佳实践跟框架选型 1. 选型框架dwr/dwr3 跟jq 1 2. DWR方便的地方分为两个地方. 1 3. dwr 优点: 1 4. 缺点: 2 5. 根jq的区别 2 1. 选型框架dwr/dwr3 跟jq 2. DWR方便的地方分为两个地方. 前台: 1.前台的js方法的自动生成(由服务端自动发送js脚本到客户端), 用户无需关心,模拟后台的方法调用形式,上手容易. 后台 1.后台获取服务bean的plugin功能. (可以和Spring.Struts集成)提供服

atitit.报表最佳实践oae 与报表引擎选型

atitit.报表最佳实践oae 与报表引擎选型 1. 报表的主要的功能and结构 2 1.1. 查询设计器(配置化,metadata in html) ,anno 2 1.2. 查询引擎 2 1.3. 建立数据源 2 1.4. 输出显示 2 1.5. 格式化 2 1.6. 图表引擎(支持二维码,条形码) 2 1.7. 导出 excel,txt,csv,pdf,xml,html 2 1.8. 打印 2 2. 报表的选择根据 2 2.1. 开发快速 recomm  db report ( 2 2.

atitit.报告最佳实践oae 和报告引擎的选择

atitit.报告最佳实践oae 与报表引擎选型 1. 报表的基本的功能and结构 2 1.1. 查询设计器(配置化,metadata in html) ,anno 2 1.2. 查询引擎 2 1.3. 建立数据源 2 1.4. 输出显示 2 1.5. 格式化 2 1.6. 图表引擎(支持二维码,条形码) 2 1.7. 导出 excel,txt,csv,pdf,xml,html 2 1.8. 打印 2 2. 报表的选择依据 2 2.1. 开发高速 recomm  db report ( 2 2.

atitit.js&#160;与c#&#160;java交互html5化的原理与总结.doc

atitit.js 与c# java交互html5化的原理与总结.doc 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参数个数1 1.3. 事件监听2 2. sendNSCommand2 2.1.1. --------nativeswing的实现2 3. 注册js 事件后台函数3 4. 后台c#3 5. 参考4 1. 实现html5化界面的要解决的策略 1.1. Js交互 Firefox与Chrome也提供了external对象,例如,他们都默认的实现了ope

HttpClient(JAVA)使用笔记

HTTPCLIENT 此工具是由apache基金会支持开发的一套 开源 http client 组件, 目前属于 http components的一部分, 官网:http://hc.apache.org/index.html http components 健壮地实现了基础HTTP部分, 并可以被扩展, 可以被 客户端和服务器端 HTTP 应用程序使用, 例如  浏览器 爬虫 代理 和 web service, 以及利用和扩展http协议用于分布式通信的系统. http components包括

Atitit 电子商务订单号码算法(java c# php js 微信

Atitit 电子商务订单号码算法(java c# php js  微信 1.1. Js版本的居然钱三爷里面没有..只好自己实现了. 1.2. 订单号标准化...长度16位 1.3. 订单号的结构 前4是自定义的,商户可以根据商户业务的不同,头四位不同.例如ET业务为4000,邮件业务为5000 1.4. 统一的订单结构,前边以为可以表示那个接口的订单(可以运用与微信,支付宝,银联表示 订单格式可用字符串,中间下划线分割,方便识别.纯数字兼容性更好 Atitit 微信支付总结 v2 paf 微信