首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HttpClient连接到9gag

使用HttpClient连接到9gag
EN

Stack Overflow用户
提问于 2012-11-12 09:18:20
回答 1查看 807关注 0票数 1

我想为9gag做一个windows store应用。我使用HttpClient

我想要连接用户,这样他就可以喜欢/不喜欢。因此,我使用数据对9gag/login执行POST请求,但它失败了。一位同事在JavaScript中做了类似的事情,它起作用了。

代码语言: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...是其中之一..。url的值是"http://9gag.com/",所以当我把断点放在最后的时候。当我看到结果并在浏览器上尝试时,我得到了错误:“请再试一次”。如果密码不正确,我会得到错误:“错误的用户名/密码组合blablabla”。

所以,有什么想法吗?....我什么也没找到...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-19 18:16:14

这是因为.Net框架中的一个错误,没有很好地处理cookies。

如果你安装了chrome,或者安装了firebug插件的firefox,或者你有其他方法可以在浏览器中读取cookie,我会解释的。

从9gag获得的cookie列表大部分时间都是针对域".9gag.com“的,除了1,名为ts1,这对登录至关重要,但不是针对".9gag.com”域,而是针对"9gag.com",因为.Net中的一个bug ts1 cookie没有存储。

这里你有一个小的变通方法,但是我不确定这是否完全稳定,

代码语言:javascript
复制
        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响应码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13337254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档