我打算写一个如下应用程序: 有一个Web应用程序,通过此Web应用程序,代理与中央通信 组织(发送数据) 现在,其中一个代理商需要一个如下申请: 当用户向Web应用程序表单输入数据时,准备数据副本。 我决定编写一个Windows应用程序并使用webbrowser控件,从网页获取数据。 问题是一些标签和控件没有id或名称来识别和获取它们的数据。有任何解决的想法。 提前致谢
答案 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
其中field1
和field2
等表示Web应用程序所期望的POST变量。
如果您需要先登录,您还需要处理此问题,首先发送登录请求并使用CookieContainer存储会话ID,如下所示:
C# keep session id over httpwebrequest
一旦你完成了这项工作,你实际上可以将响应加载到Web浏览器中,如此处所述。
Load web browser with web response
如果您需要Web浏览器控件来保留登录cookie,这可能会有所帮助