如何使用C#编辑网站中的文本字段?

时间:2012-12-24 21:29:00

标签: c# html windows-phone

我是初学Windows Phone开发人员,我想转到网址,使用字符串值(用户名和密码)登录网站,并在下一个网页上检索数据。我会使用webClient / WebBrowser吗?我真的不明白我应该如何“编辑”网页上的文本字段,填写我的用户名和密码等等。

一旦我设法登录这个网站,我想在我的应用程序中显示一些数据,这些数据是文本值。我该怎么做呢?所有人都非常感谢!

2 个答案:

答案 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供您的应用程序访问。这将使您的应用程序中涉及的工作变得更加复杂。