1

HTTP 応答からの Cookie の取得に問題があります。確かに、その応答には Cookie が必要ですが、アプリでそれらを見ることができません。

これが私のコードです:

    private static CookieContainer cookies = new CookieContainer();
    private static CookieContainer Cookies
    {
        get
        {
            return cookies;
        }
    }

    public static async Task<HttpStatusCode> SendPostRequest(string url, string postData)
    {
        if (url == null)
            throw new ArgumentNullException("url");

        if (postData == null)
            throw new ArgumentNullException("postData");

        HttpStatusCode statusCodeToReturn = HttpStatusCode.Forbidden;
        HttpWebRequest webRequest = HttpWebRequest.CreateHttp(url);
        webRequest.Method = "POST";
        var cookies = Cookies;
        webRequest.CookieContainer = cookies;
        //webRequest.SupportsCookieContainer = true;
        using (var requestStream = await webRequest.GetRequestStreamAsync())
        {
            var bytes = Encoding.UTF8.GetBytes(postData);
            requestStream.Write(bytes, 0, bytes.Length);
        }

        using (WebResponse response = await webRequest.GetResponseAsync())
        {
            statusCodeToReturn = WebResponseToHTTPStatusCode(response);
        }

        return statusCodeToReturn;
    }

クッキー (Wireshark を使用):

rack.session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRiJFMzg1ZjYxNzIzNzQ4MmY5NmI3NTMw%0AYWMwZmRjNmVmZjMwMDk4OTgzZGUwNjRlNzIzODlmODNjYzE2YmVmMjNlOQ%3D%3D%0A--30d79cd2276c3236de11104852bba4b84bf80f26; path=/; HttpOnly
4

2 に答える 2

1

問題は返されたCookieにあります。DOMAINが設定されていないCookieは、WP7ではサポートされていません。

于 2012-05-11T20:54:39.617 に答える
0

cookieを保存するためのグローバル変数を作成するだけでよいと思います。app.xaml.csファイルのように、次のような変数を作成できます。

public CookieContainer GlobalCookie{get;set;}

そして、GloalCookieを成功したHttpWebRequestCookieContainerと等しくします。

次に、別のAPIを呼び出すときにこの変数を使用できます。お役に立てば幸いです:)

于 2012-05-11T13:19:06.150 に答える