【发布时间】:2012-04-19 05:41:02
【问题描述】:
我有一个 Web 应用程序(我无法控制它),我需要以编程方式向其发送 HTTP 帖子。目前我正在使用 HttpWebRequest 之类的
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://someserver.com/blah/blah.aspx");
但是,应用程序在发布到数据时返回“未知服务器错误(不是 IIS 错误,自定义应用程序错误页面)”。使用 Fiddler 比较我的 Post 与 IE 帖子,我可以看到唯一的区别在于请求的 POST 行:
在 Internet Explorer Fiddler(RAW 视图)中显示流量
POST /blah/blah.aspx HTTP/1.1
在我的 C# 程序中,fiddler(RAW 视图)将流量记录为
POST https://someserver.com/blah/blah.aspxHTTP/1.1
这只是两个请求的区别。
从我目前的研究来看,似乎没有办法让 HttpWebRequest.Create 发布相对 URL。注意:我看到很多关于“如何使用相对 URL”的帖子,但这些建议不起作用,因为实际发布仍然使用绝对 URL(当您嗅探 HTTP 流量时)
用相对 URL 完成这篇文章的最简单方法是什么?
(流量不通过代理)
更新:目前我正在使用 IE 自动化来进行预定的性能测试,而不是上面的方法。我可能会考虑另一种脚本语言,因为我确实想在没有任何浏览器的情况下进行测试。
【问题讨论】:
-
Fiddler 的 RAW 视图总是在请求行中显示协议和主机,无论它们是否包含在那里。如果客户知道他们正在与代理(如 Fiddler)而不是在加密隧道内交谈,他们应该总是在请求行中发送这些。请求之间一定存在其他差异。
标签: c# httpwebrequest