2012-03-08 25 views
1

投稿リクエストにクッキーを保存しようとしています。私のコードは次のとおりです。HttpWebRequestを使用してwp7でクッキーを取得できません

 CookieContainer myCookieContainer = new CookieContainer(); 
     HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
     myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"; 
     myHttpWebRequest.UserAgent = userAgent; 
     myHttpWebRequest.CookieContainer = myCookieContainer; 
     myHttpWebRequest.Method = "POST"; 

     byte[] postdata = encoding.GetBytes(submitString); 

     myHttpWebRequest.BeginGetRequestStream(async1 => 
     { 
      using (Stream stream = myHttpWebRequest.EndGetRequestStream(async1)) 
       stream.Write(postdata, 0, postdata.Length); 
      myHttpWebRequest.BeginGetResponse(async2 => 
      { 
       HttpWebResponse rep = (HttpWebResponse)myHttpWebRequest.EndGetResponse(async2); 
       CookieCollection cookies = rep.Cookies; 
       using (Stream stream = rep.GetResponseStream()) 
       using (StreamReader sr = new StreamReader(stream)) 
       { 
        String content = sr.ReadToEnd(); 
        if (pageDownloadedEventHandler != null) 
         pageDownloadedEventHandler(content); 
       } 
      }, null); 
     }, null); 

Alaways the CookieContainerは空です。 クッキーの入手方法?

+0

あなたはCookieなしでリクエストを送信しています。サーバーは実際に戻ってくるCookieを実際に設定していますか? –

+0

@JoachimIsakssonはい、私はwiresharkのクッキーを参照してください –

答えて

1

あなたのコードは、あなたがrep.CookiesとmyCookieContainerの両方に表示する必要があるクッキーを送り返した場合、完璧と思われます。

FiddlerまたはWiresharkを使用してHTTPネットワークトラフィックを分析し、Cookieを検索する場合は、正しくても検索できません。この場合、私のアイデアは、あなたのブラウザで同じ要求をしているネットワークトラフィックを分析することです、おそらくphp/asp.net /他のアプリは、リクエストヘッダーがないためにCookieを設定しないことにしました。

+0

あなたの提案をありがとう。私はwiresharkを使って、サーバーがクッキーを返すのを見つけました。私は、サイトのプロセスが2回確認されなければならないことを知り、私がしたのは2回目のnull pageDownloadedEventHandlerを渡すことです。私はそれを実際のハンドラに変更した後、クッキーが現れました。非同期コードがcookieContainerのCookieを同期しないためですか? –

+0

非同期要求の場合でもCookieコンテナが同期されます。おそらくあなたがダウンロードしたイベントハンドラを指定していなかったため、ライブラリはあなたが応答データを必要としないと仮定したので、それを受け取っていませんでした。 –

関連する問題