【问题标题】:How to send GET/POST request programmatically to simple ASPX page?如何以编程方式将 GET/POST 请求发送到简单的 ASPX 页面?
【发布时间】:2014-08-15 13:01:36
【问题描述】:

我使用以下代码发布querystring

string URI = "http://somewebsite.com/default.aspx";
string myParameters = "param1=value1&param2=value2&param3=value3";
using (WebClient wc = new WebClient())
{
   wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
   string HtmlResult = wc.UploadString(URI, myParameters);
}

但不知何故,default.aspx 不接受那个 post call。

关键是当我在浏览器中手动转到http://somewebsite.com/default.aspx 时,那里的所有代码都可以正常工作。

我的问题是,当我像使用 WebClient 一样手动打开页面时,我在这里缺少什么来存档相同的结果?

提前谢谢你!

附: 1

我只是尝试对该 URL 使用 GET 方法,但它也没有效果。这怎么可能? 手动导航到页面和发送 GET/POST 有什么区别?

附: 2

我什至试过这个

wc.Headers["Accept"] = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
            wc.Headers["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC)";
Default.aspx

and Load 事件未触发。 :(

【问题讨论】:

  • 我真的不明白你想要达到什么目的。您是否尝试基本导航到somewebsite.com/default.aspx,但还将参数 param1=value1&param2=value2&param3=value3 添加到该字符串中?
  • 所以你的意思是,如果你手动输入somewebsite.com/default.aspx 到一个可以正常工作的浏览器,但是当你在 UploadString() 中将它用作参数时它不起作用?
  • 你是说WriteLog 没有做任何事情,你已经验证了吗?只需确保,因为 无论在哪里,上面的代码都将只是 POSTHtmlResult 包含什么?)。我嘲笑了你的代码,这对我来说很好(从 POST 的目标获得结果并将结果写在 originating 页面中)。
  • “手动导航到页面和发送 GET/POST 有什么区别?” - 自己看看,例如使用 Fiddler
  • 那么您提供的链接应该会给您答案 - 由于某些异常,它实际上并没有向目标发送任何请求...

标签: c# asp.net post webclient


【解决方案1】:

从您对要实现的目标的描述来看,我认为您可能选择了错误的WebClient 方法。而不是UploadString,试试DownloadString

using (WebClient wc = new WebClient())
{
  string HtmlResult = wc.DownloadString("http://somewebsite.com/default.aspx?param1=value1&param2=value2&param3=value3");
}

【讨论】:

  • 我刚刚检查了一下,它似乎工作错误......它只是不返回任何数据,甚至转到代码的下一行,它也忽略了异常。这很奇怪。
【解决方案2】:

所以那个评论是正确的

"手动导航到页面和发送有什么区别 GET/POST?” - 自己看看,例如使用 Fiddler。- 码农

我用 Fiddler 检查了所有请求,发现有重定向到索引页面的基页面类的代码。所以 Load 事件永远不会发生。

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2013-05-21
    相关资源
    最近更新 更多