使用webbrowser控件获取c#中的值

时间:2013-04-24 07:33:19

标签: c# winforms webkit webbrowser-control webkit-transform

我打算写一个如下应用程序: 有一个Web应用程序,通过此Web应用程序,代理与中央通信 组织(发送数据) 现在,其中一个代理商需要一个如下申请: 当用户向Web应用程序表单输入数据时,准备数据副本。 我决定编写一个Windows应用程序并使用webbrowser控件,从网页获取数据。 问题是一些标签和控件没有id或名称来识别和获取它们的数据。有任何解决的想法。 提前致谢

1 个答案:

答案 0 :(得分:0)

如果您知道目标Web应用程序所期望的数据类型,我想您可以使用HttpWebRequest或类似方法在C#应用程序中复制表单,而不是使用Web浏览器控件。

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("http://the.url/"); 

httpRequest.Method = "POST"; 
httpRequest.ContentType = "application/x-www-form-urlencoded"; 

string poststring = String.Format("field1={0}&field2={1}",text1.Text,text2.Text);

byte[] bytedata =  Encoding.UTF8.GetBytes(poststring);
httpRequest.ContentLength = bytedata.Length;

Stream requestStream = httpRequest.GetRequestStream();
requestStream.Write(bytedata, 0, bytedata.Length);
requestStream.Close();


HttpWebResponse httpWebResponse = (HttpWebResponse)httpRequest.GetResponse();
// Handle the response

其中field1field2等表示Web应用程序所期望的POST变量。

如果您需要先登录,您还需要处理此问题,首先发送登录请求并使用CookieContainer存储会话ID,如下所示:

C# keep session id over httpwebrequest

一旦你完成了这项工作,你实际上可以将响应加载到Web浏览器中,如此处所述。

Load web browser with web response

如果您需要Web浏览器控件来保留登录cookie,这可能会有所帮助

Use cookies from CookieContainer in WebBrowser