在使用HttpClient默认情况下做POST的时候, HttpClient并不会直接就发起POST请求, 而是会分为俩步,
1.发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据,
2.接收到Server返回的100-continue应答以后, 才把数据POST给Server
Expect:100-Continue握手的目的,是为了允许客户端在发送请求内容之前,判断源服务器是否愿意接受
请求(基于请求头部)。
Expect:100-Continue握手需谨慎使用,因为遇到不支持HTTP/1.1协议的服务器或者代理时会引起问题。
我们来看看Http1.1协议中关于这个的说明吧。
(100状态码(见10.1.1节)的目的在于允许客户端判定服务器是否愿意接受客户端发来的消息主体(基于请求头域)在客户端发送此请求消息主体前。 在有些情况下,如果服务器拒绝查看消息主体,这时客户端发送消息主体是不合适的或会降低效率。)
其实关键就在的Http1.1限制了要先握手,我们这样想一下,如果我们选择不握手是不是就行了,当然是可以的。处理方法如下
可以直接在Http请求之前加上这么一句
=false//不握手直接请求