我是初学Windows Phone开发人员,我想转到网址,使用字符串值(用户名和密码)登录网站,并在下一个网页上检索数据。我会使用webClient / WebBrowser吗?我真的不明白我应该如何“编辑”网页上的文本字段,填写我的用户名和密码等等。
一旦我设法登录这个网站,我想在我的应用程序中显示一些数据,这些数据是文本值。我该怎么做呢?所有人都非常感谢!
答案 0 :(得分:3)
根据我的评论,我创建了一个方法,它接受一个cookiejar(这允许跨请求的持久会话)一个uri,以及参数并对URI进行发布。
private static string PerformPostRequest(string uri, CookieContainer cookieJar, string parameters)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.CookieContainer = cookieJar;
byte[] bytes = Encoding.ASCII.GetBytes(parameters);
Stream os = null;
request.ContentLength = bytes.Length;
os = request.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
if (os != null)
{
os.Close();
}
HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
return sr.ReadToEnd().Trim();
}
在登录页面上发布您需要的信息之后,您可以在下一页上执行get请求,并在那里解析数据。
private static string PerformGetRequest(string uri, CookieContainer cookieJar)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "GET";
request.CookieContainer = cookieJar;
HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
return sr.ReadToEnd().Trim();
}
答案 1 :(得分:2)
Stefan的回答非常好。我将添加我认为缺少的概念性片段。
文本字段或更常见的HTML表单和输入标签/元素,只是人类使用键盘,鼠标和javascript事件填充所需的直观表示。根本不需要在Web浏览器中编辑这些标记。忽略Ajax,Web浏览简单地获取值并将它们格式化为请求(通常是获取或发布)并将该请求发送到http服务器。使用AJAX,请求还有一些必需的参数。
您最终需要的是一个相当简单的两步过程。首先创建包含所需值的请求,然后将该请求发送到http服务器。这是对实际需要的一般概念。根据所涉及的网站,有一些警告可能会使这更加困难(例如,通常CAPTCHA用于防止某些请求的这种类型的自动化。)
如果您可以控制网站或可以请求其他功能,我不会使用HTML,而是强烈建议您使用RESTful或类似的API供您的应用程序访问。这将使您的应用程序中涉及的工作变得更加复杂。