上一遍提到了HTTP协议被拆分为2个包发送的问题,客户端用的是Restsharp,Restsharp使用的是HttpWebRequest 进行的web数据的收发,经查看源码和验证发现最终是HttpWebRequest 进行了分包。
为什么会分包:
目的就是为了客户端发送一大堆无用的body到错误的server,造成网络资源的浪费。所以先发送一个header的包,询问服务器是否是你可以接受的。
等待服务器返回个100 continue的应答之后,再把包含内容的body发送过去。而且HttpWebRequest也可以指定是否这么工作。默认值应该是true。
HttpWebRequest如何不分包:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Headers.Clear();
// set Expect100Continue to false, so it will send only one http package. request.ServicePoint.Expect100Continue = false;
ServicePoint.Expect100Continue = false;
即可强制一个包发送了。