在c#中发布url并检索html
我必须获得特定页面的html代码。url格式为: 当我得到这个页面的html代码时,有一个隐藏值列表,其中填充了之前在querystring中编写的p1和p2参数。然后有一个POST操作重定向到“/dir/page.html”:在这个页面中有我需要的html内容 有没有办法获取“dir/page.html”的html内容 非常感谢您的帮助 多谢各位 我已经使用streamreader实现了GetResponseStream,但我得到了以下HTML片段:在c#中发布url并检索html,c#,url,post,C#,Url,Post,我必须获得特定页面的html代码。url格式为: 当我得到这个页面的html代码时,有一个隐藏值列表,其中填充了之前在querystring中编写的p1和p2参数。然后有一个POST操作重定向到“/dir/page.html”:在这个页面中有我需要的html内容 有没有办法获取“dir/page.html”的html内容 非常感谢您的帮助 多谢各位 我已经使用streamreader实现了GetResponseStream,但我得到了以下HTML片段: <form name="myFor
<form name="myForm" method="post" action="/dir/page.html" accept-charset="ISO-8859-1">
<input type="hidden" name="p1" value="parameter1">
<input type="hidden" name="p2" value="parameter2">
</form>
您需要
GetResponse
。类似于
HttpWebRequest request =
WebRequest.Create("http://www.externalwebsite.com/dir/page.html");
HttpWebResponse response = request.GetResponse();
StreamReader reader = New StreamReader(response.GetResponseStream());
string sHTML = reader.ReadToEnd();
您已发出HTTP GET请求,但在提交表单时,必须向服务器发出HTTP PUT请求,该服务器包含两个参数p1和p2 您可以使用
WebRequestClass
或WebClient
类和UploadValues
方法通过HTTP POST发送参数:
WebClient wc = new WebClient();
byte[] result = wc.UploadValues("http://www.externalwebsite.com/dir/page.html",
"POST",
new NameValueCollection
{
{ "p1", parameter1 },
{ "p2", parameter2 }
});
我已经实现了这段代码。请参阅我刚刚在帖子中添加的详细信息。谢谢:)没什么可做的…我曾经得到过与hiddenfield html相同的页面(参考我在第一篇文章中编写的html代码)。我建议启动fiddler,在提交表单时查看页面到底发布了什么。也许表单中还有更多的字段。你到底想要实现什么?隐藏字段是否由客户端代码填充?我不知道如何填充隐藏字段,因为“externalwebsite”不是我管理的网站。在任何情况下,我试图再次解释事情是如何进行的:-用户继续-有一个关于html代码的POST操作,我需要得到。我假设有一个会话/cookie或其他东西“告诉”网站“好的,页面已经被正确调用,显示html内容!”。你最好在你的应用程序中创建一个InternetExplorer实例并导航到该页面-这将模拟用户体验,然后你可以检索你想要的值。