我想解析和接受POST参数的页面。这是我的情景。我必须解析一些搜索结果。但搜索参数在帖子正文中发送到该页面。
要解析搜索结果,我必须在POST中将参数发送到该页面。我怎么能用敏捷包来做到这一点?
请帮帮我。
答案 0 :(得分:2)
是的,您可以使用HTML Agility Pack发布参数。看看下面的代码。
BrowserSession b = new BrowserSession();
b.Get("http://www.skyline-eng.com/");
b.FormElements["navigationTypeID"] = rblCategory.SelectedItem.Value;
b.FormElements["navigationSeriesID"] = boxItem.Value;
HtmlDocument docSkyLine = b.Post("http://www.skyline-eng.com/");
这里的navigationTypeID和navigationSeriesID是post参数。像这样使用并使用伟大的工具HTMLAgility Pack继续解析数据。
答案 1 :(得分:0)
我认为这不是HTML敏捷包的用途。它不是HTTP敏捷包,它不解析任何HTTP请求。它只解析HTML输出(即响应,而不是请求)。
您可以使用该页面后面的代码中的Page.Request[<param>]
字典访问页面收到的POST参数。
如果那不是你想要做的,你能澄清一下吗?
答案 2 :(得分:0)
使用WebClient使帖子发送搜索页面所需的参数。使用Html Agility包可以解析返回的html。
WebClient将具有搜索页面结果返回的html。
这样的事情:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://exposureroom.com");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
string formParameters = "name1=value1&name1=value2";
byte[] requestBuffer = Encoding.ASCII.GetBytes(formParameters);
var requestStream = request.GetRequestStream();
requestStream.Write(requestBuffer, 0, requestBuffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string str = reader.ReadToEnd();
在您的情况下,字符串变量formparameters需要包含搜索页面所需的查询参数。然后,这些参数将以“POST”Http方法的形式发送到您的搜索页面。当然,网址也应该更改为您的网址。