首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Fiddler发送WinForms应用程序使用HttpWebRequest到webservice的帖子不起作用

通过Fiddler发送WinForms应用程序使用HttpWebRequest到webservice的帖子不起作用
EN

Stack Overflow用户
提问于 2012-07-20 13:34:36
回答 1查看 551关注 0票数 0

我正在使用HttpWebRequest在VB.Net WinForms应用程序中从内部get服务中获取数据。当Fiddler不运行时,我使用的代码在GET和POST中都是有效的。如果我有Fiddler运行的GET工作,并被捕获,但一个帖子不完整。在这种情况下,Fiddler捕获了初始请求,但从未得到响应,应用程序也没有得到响应。

该代码为POST构建一个HttpWebRequest,设置适当的属性,对要发送到JSON的数据进行编码,然后执行此操作。

代码语言:javascript
复制
Using postStream As Stream = webrequestobj.GetRequestStream()
    postStream.Write(WebServiceByteData, 0, WebServiceByteData.Length)
End Using

我使用WireShark来捕获生成的网络数据包,并注意到当没有通过Fiddler发送一个帖子时,会发生以下情况。

  • 当执行"postStream As Stream = webrequestobj.GetRequestStream()“时,发送包含"Expect: 100-继续”报头的包含所有头信息的数据包,但没有请求数据。
  • 当执行postStrean.Write调用时,发送具有请求数据的附加数据包。

在运行Fiddler的情况下,在执行postStream.Write之前,不会将任何内容放到线路上。此时,带有"Expect: 100-继续“报头的头包和请求数据包在服务响应"100继续”之前都会被发回。我猜这会混淆yet服务,因为它还没有收到请求数据包。它不会响应请求的数据。

我使用Composer手动创建请求,而不使用"Expect: 100-继续“标题。当执行此操作时,将生成相同的两个数据包,并且服务将使用预期的数据进行响应。

因此,为了能够使用Fiddler捕获POST通信量,看起来我需要告诉HttpWebRequest不要发出"Expect: 100-继续“报头(我已经看过了,但还没有找到方法),或者让Fiddler以不同的方式处理数据包,可能在看到"100继续”响应之前不发送第二个数据包,或者去掉"Expect: 100-继续“头。

有可能我错过了Fiddler中的安装选项,但是到目前为止,我尝试过的任何东西都没有什么区别。

谢谢,戴夫

EN

回答 1

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11580462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档