我是一名初学者 Windows Phone 开发人员,我想访问一个 url,使用字符串值(用于用户名和密码)登录网站并在下一个网页上检索数据。我会为此使用 webClient/WebBrowser 吗?我真的不明白我应该如何去“编辑”网页上的文本字段,填写我的用户名和密码等等。
一旦我设法登录到该网站,我希望在我的应用程序中显示一些数据,它们是文本值。我该怎么做呢?非常感谢所有帮助!
我是一名初学者 Windows Phone 开发人员,我想访问一个 url,使用字符串值(用于用户名和密码)登录网站并在下一个网页上检索数据。我会为此使用 webClient/WebBrowser 吗?我真的不明白我应该如何去“编辑”网页上的文本字段,填写我的用户名和密码等等。
一旦我设法登录到该网站,我希望在我的应用程序中显示一些数据,它们是文本值。我该怎么做呢?非常感谢所有帮助!
根据我的评论,我创建了一个方法,该方法接受一个 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();
}
将所需的登录信息发布到登录页面后,您可以在下一页执行获取请求,并在那里解析数据。
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();
}
Stefan 的回答非常好。我将添加我认为缺少的概念部分。
文本字段或更通常称为 HTML 表单和输入标签/元素,只是人类使用键盘、鼠标和 javascript 事件填充所需的视觉表示。这些标签根本不需要在 Web 浏览器中进行编辑。不考虑 Ajax,简单的 Web 浏览器获取值并将它们格式化为请求(通常是 get 或 post)并将该请求发送到 http 服务器。使用 AJAX,请求还有一些必需的参数。
您真正需要的只是一个相当简单的两步过程。首先创建一个包含所需值的请求,然后将该请求发送到 http 服务器。这是对实际需要的一个非常笼统的想法。根据所讨论的网站,有一些警告可能会使这变得更加困难(例如,通常使用CAPTCHA来防止对某些请求进行这种类型的自动化)。
如果您可以控制网站或可以请求其他功能,我不会使用 HTML,而是强烈建议您使用 RESTful 或类似的 API 来访问您的应用程序。这将使您的应用程序中涉及的工作变得不那么复杂。