3

私はWindowsPhoneの初心者の開発者であり、URLにアクセスし、文字列値(ユーザー名とパスワード用)を使用してWebサイトにログインし、次のWebページでデータを取得したいと考えています。これにはwebClient/WebBrowserを使用しますか?Webページのテキストフィールドを「編集」して、ユーザー名やパスワードなどを入力する方法がよくわかりません。

このWebサイトにログインできたら、アプリケーションに表示したいテキスト値のデータがいくつかあります。どうすればこれを行うことができますか?すべての助けに大いに感謝します!

4

2 に答える 2

3

ステファンの答えはかなり良いです。不足していると思われる概念的な部分を追加します。

テキスト フィールド、またはより一般的には HTML フォームおよび入力タグ/要素と呼ばれるものは、人間がキーボード、マウス、および JavaScript イベントを使用して入力するために必要な視覚的表現にすぎません。これらのタグは、Web ブラウザーで編集する必要はまったくありません。Ajax を無視して、単純な Web ブラウズは値を取得し、それらを要求 (通常は get または post) にフォーマットし、その要求を http サーバーに送信します。AJAX では、要求にさらにいくつかの必須パラメーターがあります。

実際に必要なのは、かなり簡単な 2 ステップのプロセスだけです。最初に必要な値を含むリクエストを作成し、次にそのリクエストを http サーバーに送信します。これは、実際に何が必要かについての非常に一般的な考え方です。問題の Web サイトによっては、これをより困難にする可能性があるいくつかの注意事項があります (通常、CAPTCHAは、一部の要求からのこの種の自動化を防止するために使用されます)。

Web サイトを制御できる場合、または追加機能を要求できる場合は、HTML を使用せず、アプリケーションがアクセスするために RESTful または同様の API を使用することを強くお勧めします。これにより、アプリケーションに関連する作業がより簡単になります。

于 2012-12-24T21:54:35.410 に答える
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();
    }
于 2012-12-24T21:39:11.667 に答える