1

アップデート1:post / getヘッダーのスクリーンショット:http://imageshack.us/photo/my-images/826/getpost.png

Webリクエストのヘルプを探しています。リクエストの目的は、サイトにログインしてSet-Cookieヘッダーを取得することです。助けてくれてありがとう!

サイトにログインして、以下のコードを使用してCookie値を取得しようとしています。ただし、Set-Cookieヘッダーは常にnullです。

static void Main(string[] args)
{
    string formUrl = "https://account.guildwars2.com/login";
    string formParams = string.Format("email={0}&password={1}", "xxx", "xxx");
    string cookieHeader;
    var req = (HttpWebRequest)WebRequest.Create(formUrl);
    req.Referer = "https://account.guildwars2.com/login";
    req.ContentType = "application/x-www-form-urlencoded";
    req.Method = "POST";
    req.KeepAlive = true;
    byte[] bytes = Encoding.ASCII.GetBytes(formParams);
    req.ContentLength = bytes.Length;
    using (Stream os = req.GetRequestStream())
    {
        os.Write(bytes, 0, bytes.Length);
    }
    WebResponse resp = req.GetResponse();
    cookieHeader = resp.Headers["Set-Cookie"];
}

これがリダイレクトと関係があるかどうかはわかりません。C#アプリケーションでは、response-uriは「https://account.guildwars2.com/login?redirect_uri=/download」であるためです。

応答ヘッダーChrome

  • コンテンツの長さ:0
  • Content-Type:text / html
  • 日付:2012年9月29日土曜日15:07:30 GMT
  • 場所:ダウンロード
  • サーバー:Microsoft-IIS / 7.5
  • Set-Cookie:s = 60B845F0-4E22-4A4B-890B-F3B885CEF9AE; Domain = guildwars2.com; パス=/; バージョン=1
  • X-Powered-By:ARR / 2.5

C#アプリケーションからの応答

  • コンテンツ-長さ:7344
  • コンテンツタイプ:text / html
  • 日付:2012年9月29日土曜日15:42:44 GMT
  • サーバー:Microsoft-IIS / 7.5
  • X-Powered-By:ARR / 2.5
4

2 に答える 2

5

デフォルトでは、HttpWebRequestHTTPリダイレクト応答に自動的に従います。これによりSet-Cookie、元の応答でヘッダーをキャプチャできなくなります。この動作を無効にするには、リクエストを送信する前にに設定AllowAutoRedirectします。false

req.AllowAutoRedirect = false;
于 2012-09-29T20:48:03.770 に答える
0

次の方法でCookieを取得してみてください。

CookieContainer cookies = new CookieContainer();

WebResponse resp = req.GetResponse();

CookieCollection cookieCollection = cookies.GetCookies(request.RequestUri);
于 2012-09-29T17:01:11.570 に答える