2

我有一个 Web 应用程序(我无法控制),我需要以编程方式发送 HTTP 帖子。目前我正在使用 HttpWebRequest 之类的

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://someserver.com/blah/blah.aspx");

但是,应用程序在发布到数据时返回“未知服务器错误(不是 IIS 错误,自定义应用程序错误页面)”。使用 Fiddler 比较我的 Post 与 IE 帖子,我可以看到唯一的区别在于请求的 POST 行:

在 Internet Explorer 中提琴手(RAW 视图)显示流量

POST /blah/blah.aspx HTTP/1.1

在我的 C# 程序提琴手(RAW 视图)中,将流量记录为

发布https://someserver.com/blah/blah.aspx HTTP /1.1

这只是两个请求的区别。

从我到目前为止的研究来看,似乎没有办法让 HttpWebRequest.Create 发布相对 URL。注意:我看到很多关于“如何使用相对 URL”的帖子,但这些建议不起作用,因为实际帖子是仍然使用绝对 URL 完成(当您嗅探 HTTP 流量时)

用相对 URL 完成这篇文章的最简单方法是什么?

(流量不通过代理)

更新:目前我正在使用 IE 自动化来进行预定的性能测试,而不是上面的方法。我可能会考虑另一种脚本语言,因为我确实想在没有任何浏览器的情况下进行测试。

4

1 回答 1

0

不,您不能在 URL 中没有服务器的情况下进行 POST。

您的程序失败的一个可能原因是它没有使用正确的代理,因此无法解析服务器名称。

注意:Fiddler 在您正在谈论的视图中分别显示路径和主机。

将您的程序配置为使用 Fiddler 作为代理 (127.0.0.1:8888) 并将您发出的请求与浏览器的请求进行比较。不要忘记将 Fiddler 切换为“显示所有进程”。

这是关于为不同类型的环境(包括 C# 代码)配置 Fiddler 的文章:Fiddler:配置客户端

objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Proxy= new WebProxy("127.0.0.1", 8888); 
于 2012-04-19T05:48:22.073 回答