ここで何が問題なのか、私は完全に混乱しています。私の理解はCookieContainer
完全に間違っているに違いありません。自分のマシンでホストされているWebサイトにログインしようとしています。フィドラーをプロキシとして設定しているので、トラフィックを読み取ることができます。
Windows PhoneでCookieを表示しようとするたびに、Cookieコンテナは常に空になります。私はそのコンテナを満たせるようにするために非常に多くの異なることを試みましたが、すべてが失敗しました。これは私が試した最後のことです:
CookieContainer cc = new CookieContainer();
HttpWebRequest request = WebRequest.CreateHttp("http://localhost:8888/account/logon");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.CookieContainer = cc;
request.BeginGetRequestStream(streamResult =>
{
HttpWebRequest xR = streamResult.AsyncState as HttpWebRequest;
Stream stream = xR.EndGetRequestStream(streamResult);
StreamWriter sw = new StreamWriter(stream);
sw.Write("username=user1&password=1111");
sw.Close();
xR.BeginGetResponse(responseResult =>
{
HttpWebRequest yR = responseResult.AsyncState as HttpWebRequest;
HttpWebResponse response = yR.EndGetResponse(responseResult) as HttpWebResponse;
response.Close();
Dispatcher.BeginInvoke(() => MessageBox.Show("cc count: " + cc.Count.ToString() + "\nresponse count: " + response.Cookies.Count));
}, xR);
}, request);
ただし、コンソールアプリでまったく同じコードを使用すると、コンテナ「cc」にCookieが含まれます。
CookieContainer cc = new CookieContainer();
HttpWebRequest request = WebRequest.CreateHttp("http://localhost:8888/account/logon");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.CookieContainer = cc;
request.BeginGetRequestStream(streamResul =>
{
HttpWebRequest xR = streamResul.AsyncState as HttpWebRequest;
Stream stream = xR.EndGetRequestStream(streamResul);
StreamWriter sw = new StreamWriter(stream);
sw.Write("username=user1&password=1111");
sw.Close();
xR.BeginGetResponse(responseResult =>
{
HttpWebRequest yR = responseResult.AsyncState as HttpWebRequest;
HttpWebResponse response = yR.EndGetResponse(responseResult) as HttpWebResponse;
response.Close();
Console.WriteLine("cc count: {0}\nresponse count: {1}", cc.Count.ToString(), response.Cookies.Count);
}, xR);
}, request);
Console.Read();
サーバーは、テストするたびに探している両方のCookieを送り返しています。ただし、何らかの理由で、WindowsPhoneコードはこれらのCookieを取得しません。これは、この質問とほとんど同じです。HttpWebRequestを使用してwp7でCookieを取得することはできませんが、解決策が何であるかがわかりません。