带有部分URL的Http Post在C#.NET中

时间:2012-04-19 05:41:02

标签: c# httpwebrequest

我有一个Web应用程序(我无法控制)我需要以编程方式发送HTTP post。目前我正在使用像

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

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

在Internet Explorer中,Fiddler(RAW视图)显示流量

POST /blah/blah.aspx HTTP / 1.1

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

POST https://someserver.com/blah/blah.aspx HTTP / 1.1

这只是两个请求的区别。

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

使用相对URL完成此帖的最简单方法是什么?

(流量不通过代理)

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

1 个答案:

答案 0 :(得分:0)

不,你不能在没有服务器的情况下在网址中进行POST。

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

注意:Fiddler会在您正在讨论的视图中单独显示路径和主机。

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

以下是关于为不同类型的环境配置Fiddler的文章,包括C#代码:Fiddler: Configuring clients

objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Proxy= new WebProxy("127.0.0.1", 8888);