1

9gagのWindowsストアアプリをやりたいです。私はHttpClientを使用します

ユーザーを接続して、好きな/好きでないことができるようにしたい。そのため、データを使用して 9gag/login への POST 要求を実行すると、失敗します。同僚が JavaScript で同様のことを行い、うまくいきました...

    private async void connect()
    {

        try
        {
            string result;

            HttpResponseMessage response = await httpClient.GetAsync(url + "login/");
            response.EnsureSuccessStatusCode();

            result = await response.Content.ReadAsStringAsync();
            string key = takeKey(result);

            var values = new Dictionary<string, string> { { "csrftoken", key }, { "username", username }, { "password", password } };
            //Header of the http request
            HttpContent header = new FormUrlEncodedContent(values);
            response = await httpClient.PostAsync(url + "login/", header);
            response.EnsureSuccessStatusCode();

            result = await response.Content.ReadAsStringAsync();
            string test = response.IsSuccessStatusCode.ToString();
        }
        catch (HttpRequestException hre)
        {
            string test = "";
        }
        catch (Exception ex)
        {
            // For debugging
            string test = "";
        }

    }

HTTPContent を配置するさまざまな方法を試してみました.... そのうちの 1 つです.url の値は「http://9gag.com/」なので、最後にブレークポイントを配置すると。結果を見てブラウザで試してみると、「もう一度やり直してください」というエラーが表示されます。パスワードが間違っていると、「間違った組み合わせのユーザー/パスワード blablabla」というエラーが表示されます。

それで、何かアイデアはありますか?....何も見つかりませんでした....

4

1 に答える 1

2

これは、.Net フレームワークのバグが原因であり、Cookie をうまく処理できません。

Chrome、または firebug プラグインがインストールされた Firefox を使用している場合、またはブラウザで Cookie を読み取る別の方法がある場合は、説明します。

9gag から取得する Cookie のリストは、ほとんどの場合、ドメイン「.9gag.com」を対象としています。ただし、ts1 という名前の 1 つを除いて、これはログインに不可欠ですが、ドメイン「.9gag.com」向けではありません。しかし、「9gag.com」の場合、.Net のバグにより、ts1 Cookie は保存されません。

ここに小さな回避策がありますが、これが完全に安定しているかどうかはわかりません。

        Cookie cookie = new Cookie();

        cookie.Domain = "9gag.com";

        cookie.Name = "ts1";

        cookie.Value = "VALUEOFTHISCOOKIE";

        this._Cookies.Add(new Uri("http://9gag.com"), cookie);

上記のコードでは、「VALUEOFTHISCOOKIE」をブラウザーの Cookie の値に置き換える必要があります (私の場合: fb221d618c89577cf59c7ce5fd300c5b43e4259f)。

これはうまくいきました。ログインが正しい場合は、302 応答コードが返されます。

于 2012-12-19T10:16:13.550 に答える