最近学习apache的httpclient
在使用postmethod时,当使用httpclient执行executeMethod(POSTMETHOD)
时发现,该方法会调用
HttpMethodBase.execute(HttpState, HttpConnection)
该方法又会调用
HttpMethodBase.writeRequest(HttpState, HttpConnection)
而HttpMethodBase.writeRequest又会调用
HttpMethodBase.writeRequestHeaders(HttpState, HttpConnection)
在这里会添加一些头字段。
HttpMethodBase.writeRequestHeaders会调用EntityEnclosingMethod.addRequestHeaders(HttpState, HttpConnection)
EntityEnclosingMethod.addRequestHeaders会调用
ExpectContinueMethod.addRequestHeaders(HttpState, HttpConnection)
ExpectContinueMethod.addRequestHeaders会调用
HttpMethodBase.addRequestHeaders(HttpState, HttpConnection)
在这里会调用
addUserAgentRequestHeader(state, conn);
addHostRequestHeader(state, conn);
addCookieRequestHeader(state, conn);
addProxyConnectionHeader(state, conn);
在EntityEnclosingMethod.addRequestHeaders里会调用
addContentLengthRequestHeader(state, conn);
如果在请求头中没有content-length和Transfer-Encoding
则会在头中加入Content-Length
在设置完Content-Length后,会检验头Content-Type
super.addRequestHeaders(state, conn);
addContentLengthRequestHeader(state, conn);
// only use the content type of the request entity if it has not already been
// set manually
if (getRequestHeader("Content-Type") == null) {
RequestEntity requestEntity = getRequestEntity();
if (requestEntity != null && requestEntity.getContentType() != null) {
setRequestHeader("Content-Type", requestEntity.getContentType());
}
}
在执行完这些后
会在头中加入
User-Agent: Host: Content-Length:
这样如果手动设置请求头中的Content-Length,则httpclient就不会自己设置了。这样如果请求体的长度与Content-Length不相符的时候,在使用weblogic作为web容器的时候,就会有问题。
分享到:
相关推荐
httpclient使用教程
Http协议使用封装jar包(commons-codec-1.3.jar、commons-httpclient-3.1.jar、commons-logging-1.1.jar) 简单使用方法: public static void main(String[] args) { // String str1 = "...
使用httpClient进行代理
httpClient 教程 使用事例 单向认证
httpclient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,本文档提供使用httpclient的使用方法
commons-httpclient,java中使用httpclient中使用的扩展工具
使用HttpClient必须的jar包 使用HttpClient必须的jar包 使用HttpClient必须的jar包
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、...HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。
HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。 适用人群:JavaWeb开发者 使用场景:在Java后端程序中,模拟浏览器端进行Web请求。 其它:...
Httpclient,一个我们平时开发时经常用到的组件
HttpClient是个很不错的开源框架(org.appache.http),封装了访问http的请求头,参数,内容体,响应等等,使用起来更方面更强大。 HttpURLConnection是java的标准类,可以实现简单的基于URL请求、响应功能,什么都...
httpClient组件使用说明,搭建,所需jar包,简单应用,例子。适用于初级学员
URLConnection和HttpClient使用入门
NULL 博文链接:https://wenkaixuan.iteye.com/blog/2109590
httpClient4.3.6 HttpClient使用详解 httpClient中文帮助文档
基于Java的httpclient简单使用,纯属学习使用,如发生问题,作者不负任何责任。有异议,请联系1218476693@qq.com。
httpclient使用详解共8页.pdf.zip