2012-11-12 6 views
1

9gag 용 Windows 스토어 앱을 만들고 싶습니다. 나는 HttpClient를 사용한다.HttpClient를 사용하여 9gag에 연결

나는 그가 좋아할 수있게 사용자를 연결하고 싶다. 그래서, 나는 9gag에 POST 요청을/데이터와 로그인하고 실패합니다. 동료는 자바 스크립트에서 비슷한 일을했고,이

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 = ""; 
     } 

    } 

내가 뭔가 ... URL의 값은 그들 중 하나입니다 .... HTTPContent을 넣어 여러 가지 방법을 시도 ... 일에 "http ://9gag.com/ "이므로 끝 부분에 중단 점을 넣을 때. 결과를보고 브라우저에서 시도하면 "다시 시도하십시오."라는 오류가 나타납니다. 암호가 잘못되면 "잘못된 조합 사용자/암호 blablabla"라는 오류 메시지가 나타납니다.

그래서, 어떤 아이디어가? .... 나는 아주 잘 쿠키를 handeling하지 ....

+1

응답을 비동기 적으로 요청합니다. –

+0

네, 왜냐하면 .Net for Windows Store Apps에서 모든 것이 비동기이기 때문입니다. HttpWebRequest를 사용하기 전에 비동기 메소드가 사용 가능하지 않기 때문에 ... – Nic007

+2

예하지만 새 스레드에서 컨텐츠를 요청하고 시작 직후 스레드는 아직 쓰여지지 않은 문자열을 읽습니다. –

답변

2

이 때문에 닷넷 프레임 워크의 버그입니다 아무것도 찾지 못했습니다.

firebug 플러그인이 설치된 Firefox 또는 Firefox가 있거나 브라우저에서 쿠키를 읽을 수있는 다른 방법이 있다면 설명하겠습니다.

9gag에서 얻는 쿠키 목록은 대부분 ".9gag.com"도메인을 의미하며 ts1이라는 이름의 1은 제외하고 로그인하는 데 중요하지만 도메인에는 해당되지 않습니다. " 9gag.com "이지만"9gag.com "의 경우 .Net의 버그로 인해 ts1 쿠키가 저장되지 않습니다. 여기

당신은에서와 같이 위의 코드에서

 Cookie cookie = new Cookie(); 

     cookie.Domain = "9gag.com"; 

     cookie.Name = "ts1"; 

     cookie.Value = "VALUEOFTHISCOOKIE"; 

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

당신이 쿠키의 값으로 "VALUEOFTHISCOOKIE"를 교체해야하지만 나는이 완전히 안정 경우 확실하지 않다, 작은 해결을 귀하의 브라우저 (내 경우 : fb221d618c89577cf59c7ce5fd300c5b43e4259f).

로그인이 맞으면 302 응답 코드가 나에게 유용합니다.

관련 문제