2016-07-25 31 views
0

私はこのウェブサイトにjsonとのログインPOSTリクエストを作成しようとしています Link、そして、redirect.Myの現在のプログラムは、ログインの詳細が間違っているとうまくいきます。詳細が間違っている'(401)Unauthorized'これは、ポストリクエストが成功したことを意味します。 しかし、私の問題は、ログインの詳細が正しい場合、私は '(400)Bad Request'を取得することです。なぜこのようなことが起こっているのか分かりませんが、現在のところ私はこの時点で固執しています。ここ は私のコードである、と私は誰かが私を助けることを願って:リダイレクト付きのJson投稿要求

static string url = "https://auth.riotgames.com/authz/auth"; 
     static string uriString = ""; 
     static void Main(string[] args) 
     { 
      var request_check = (HttpWebRequest)HttpWebRequest.Create("https://auth.riotgames.com/authz/auth"); 
      request_check.Host = "auth.riotgames.com"; 
      request_check.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"; 
      request_check.Accept = "application/json, text/javascript, */*; q=0.01"; 
      request_check.Headers.Add("Accept-Language", "en-US,en;q=0.5"); 
      request_check.Headers.Add("Accept-Encoding", "gzip, deflate, br"); 
      request_check.ContentType = "application/json"; 
      request_check.Headers.Add("X-Requested-With", "XMLHttpRequest"); 
      request_check.Referer = "https://auth.riotgames.com/authorize?response_type=code&scope=openid%20email&client_id=merch-store-client&ui_locales=de-DE&login_hint=euw&redirect_uri=https://euw.merch.riotgames.com/de/riot_sso/auth/redirect/"; 
      var cookieContainer = new CookieContainer(); 
      request_check.CookieContainer = cookieContainer; 
      request_check.Method = "POST"; 
      request_check.KeepAlive = true; 
      request_check.AllowAutoRedirect = false; 
      // Account details Senturia:a12365478 
      using (var streamWriter = new StreamWriter(request_check.GetRequestStream())) 
      { 
       string json = "{\"username\":\"Senturia\",\"password\":\"a12365478\",\"remember\":false,\"region\":\"EUW1\",\"language\":\"de_DE\",\"lang\":\"de_DE\"}"; 
       streamWriter.Write(json); 
      } 
      try 
      { 
       // Get the response ... 
       using (var webResponse = (HttpWebResponse)request_check.GetResponse()) 
       { 
        // Now look to see if it's a redirect 
        if ((int)webResponse.StatusCode >= 300 && (int)webResponse.StatusCode <= 399) 
        { 
         uriString = webResponse.Headers["Location"]; 
         Console.WriteLine("Redirect to " + uriString ?? "NULL"); 
        } 
       } 
      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 



      Console.ReadKey(); 
     } 

答えて

2

HTTPリクエストが失敗したときにあなたがWebExceptionをキャッチすることができ、それが理由に関する有用な情報が含まれている可能性があるとして、サーバからの応答を読みます要求が失敗しました:あなたのケースで

catch (WebException e) 
{ 
    using (var stream = e.Response.GetResponseStream()) 
    using (var reader = new StreamReader(stream)) 
    { 
     Console.WriteLine(reader.ReadToEnd()); 
    } 
} 

を、これは印刷します

{"error":"invalid_session_id","error_description":"Missing session id."} 

だから私は、サーバーがいくつかのが必要であることを推測します要求と一緒に送信されるession IDパラメータ。それを行う方法の詳細については、呼び出すエンドポイントのドキュメントを参照してください。

+0

チップをありがとう!それは本当に便利です! – Catalin

関連する問題