2011-01-18 8 views
1

C#とWebRequestクラスを使用してWebサイトにログインしようとしています。これは私がウェブページにPOSTデータを送信するために最後の夜までに書いたコードです:C#とWebRequestクラスでプログラムでWebサイトにログイン

public string login(string URL, string postData) 
{ 
    Stream webpageStream; 
    WebResponse webpageResponse; 
    StreamReader webpageReader; 
    byte[] byteArray = Encoding.UTF8.GetBytes(postData); 

    _webRequest = WebRequest.Create(URL); 
    _webRequest.Method = "POST"; 
    _webRequest.ContentType = "application/x-www-form-urlencoded"; 
    _webRequest.ContentLength = byteArray.Length; 

    webpageStream = _webRequest.GetRequestStream(); 
    webpageStream.Write(byteArray, 0, byteArray.Length); 

    webpageResponse = _webRequest.GetResponse(); 

    webpageStream = webpageResponse.GetResponseStream(); 

    webpageReader = new StreamReader(webpageStream); 

    string responseFromServer = webpageReader.ReadToEnd(); 

    webpageReader.Close(); 
    webpageStream.Close(); 
    webpageResponse.Close(); 

    return responseFromServer; 
} 

、それが正常に動作しますが、私はその後、ログインスクリプトにPOSTデータを送信するためにそれを変更してできるか見当がつかないクッキーを保存し、ログイン、私はウェブサイト上でのFirebugを使って自分のネットワーク転送を見てきました

ページにログインし、それがこのようになりますURLにPOSTデータを送信している(?):。

accountName=myemail%40gmail.com&password=mypassword&persistLogin=on&app=com-sc2 

として、私が知っている限り、私のC#アプリでこのウェブサイトで自分のアカウントを使用できるようにするためには、 Webサーバーが送信したすべての要求に対して使用しますか?これは正しいですか?または、クッキーを一切持たないでもらえますか?

ご協力いただきありがとうございます。 :)

答えて

1

ログインプロセスは、具体的なWebサイトによって異なります。クッキーを使用する場合は、クッキーを使用する必要があります。 Firefoxをいくつかのhttp-headersで見てプラグインを見て、ヘッダーの中を特定のWebサイトに送信する方法を見てから、C#と同じ方法で実装することをお勧めします。私はクッキーの例を含めて、昨日前に非常によく似た質問に答えました。 Look here.

+0

ああ、へのクロスポストです。だから私がこの権利を読んでいるならば、(CookieContainerメソッドを使って)ログインメソッドにクッキーを取得するコードを追加し、ログインする必要があるページのリクエストごとに 'reqのようなものを使用します。 CookieContainer = Cookie; '?もしそうなら、それは実装するのに十分単純だと思われます。 – Wen

0

私は、HtmlElementクラスを使用してウェブサイトを操作する運が増えたことを発見しました。

Hereはクールなコードを使用してログインすると、どのように働くかの例(あなたがWebBrowserコントロールを使用している提供)

関連する問題