2013-08-31 63 views
0

我使用Winrt,我嘗試解析HTML頁面以獲得結果。在網頁中點擊Submittbutton

但爲了得到結果,我必須填寫一個搜索頁面並點擊提交按鈕。

Win RT中的代碼可以做到這一點嗎?

回答

0

我想你還沒有下載的頁面,但(或在網頁視圖中顯示)。要提出請求,請仔細閱讀HttpClientHttpClientHandler。根據頁面是使用GET還是POST,您需要額外創建HttpRequestMessage。搜索表單的URL(通常是表單的action屬性)以瞭解您的請求uri。

例子:

var ClientHandler = new HttpClientHandler(); 
ClientHandler.UseCookies = true; 
ClientHandler.AllowAutoRedirect = true; 
ClientHandler.UseDefaultCredentials = true; 
ClientHandler.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; 

var Client = new HttpClient(ClientHandler); 
Client.DefaultRequestHeaders.Add("Accept", "text/html, application/xhtml+xml, */*");   
Client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"); 

var Response = await Client.GetAsync(RequestUri); 

你RequestUri就應該像這樣http://www.example.com/search?query=search。但是如果你想在頁面使用POST提交您的問題,我認爲你需要如下創建HttpRequestMessage:

var RequestMessage = new HttpRequestMessage(); 
RequestMessage.Content = new StringContent(YourPostData, Encoding.UTF8, "application/x-www-form-urlencoded"); 
RequestMessage.Method = HttpMethod.Post; 
RequestMessage.RequestUri = new Uri(OtherRequestUri); 
Response = await Client.SendAsync(RequestMessage); 

解析響應的內容,您最好使用HtmlAgilityPack我想。

1

如果您在使用WinJS查詢找到你的按鈕,你可以通過編程火像這樣的單擊事件:

element.fireEvent("onclick"); 
+0

嗨thx爲您的答覆。但是我沒有在Xaml或html中這樣做。我想在ViewModel或一些Helper類中執行這些操作。我希望有一個WebClient Toolkit或s.th.但winRt沒有我想象的那樣。 – Sascha

+0

我明白你的意思了,是的,我不是100%確定你可以用這種方式直接與事物的觀點對話,但我相信某些時候某些事情會出現。 – dougajmcdonald

+0

我看了一下,我想你可以從這裏使用可移植的HttpClient包:http://www.hanselman.com/blog/NuGetPackageOfTheWeek13PortableHttpClientMakesPortableLibrariesMoreUseful.aspx – dougajmcdonald