httpclient 使用小记

最近学习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容器的时候,就会有问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值