我正在使用HttpWebRequest在VB.Net WinForms应用程序中从内部get服务中获取数据。当Fiddler不运行时,我使用的代码在GET和POST中都是有效的。如果我有Fiddler运行的GET工作,并被捕获,但一个帖子不完整。在这种情况下,Fiddler捕获了初始请求,但从未得到响应,应用程序也没有得到响应。
该代码为POST构建一个HttpWebRequest,设置适当的属性,对要发送到JSON的数据进行编码,然后执行此操作。
Using postStream As Stream = webrequestobj.GetRequestStream()
postStream.Write(WebServiceByteData, 0, WebServiceByteData.Length)
End Using我使用WireShark来捕获生成的网络数据包,并注意到当没有通过Fiddler发送一个帖子时,会发生以下情况。
在运行Fiddler的情况下,在执行postStream.Write之前,不会将任何内容放到线路上。此时,带有"Expect: 100-继续“报头的头包和请求数据包在服务响应"100继续”之前都会被发回。我猜这会混淆yet服务,因为它还没有收到请求数据包。它不会响应请求的数据。
我使用Composer手动创建请求,而不使用"Expect: 100-继续“标题。当执行此操作时,将生成相同的两个数据包,并且服务将使用预期的数据进行响应。
因此,为了能够使用Fiddler捕获POST通信量,看起来我需要告诉HttpWebRequest不要发出"Expect: 100-继续“报头(我已经看过了,但还没有找到方法),或者让Fiddler以不同的方式处理数据包,可能在看到"100继续”响应之前不发送第二个数据包,或者去掉"Expect: 100-继续“头。
有可能我错过了Fiddler中的安装选项,但是到目前为止,我尝试过的任何东西都没有什么区别。
谢谢,戴夫
发布于 2013-05-07 18:09:13
老掉牙的问题,但简短的答案是,缺乏100/继续的答复应该没有任何关系。
要了解有关Expect的更多信息:继续,包括如何删除此标头(如果您愿意),请参阅http://blogs.msdn.com/b/fiddler/archive/2011/11/05/http-expect-continue-delays-transmitting-post-bodies-by-up-to-350-milliseconds.aspx
https://stackoverflow.com/questions/11580462
复制相似问题