簡體   English   中英

C#Json發布帶有重定向的請求

[英]C# Json post request with redirect

我正在嘗試使用json向此網站鏈接發出登錄POST請求,並按照重定向進行操作。如果登錄詳細信息有誤,我當前的程序運行正常。如果詳細信息有誤,我會收到``(401)未經授權''。 消息,表示發布請求成功。 但是,我的問題是,如果登錄詳細信息正確,我會收到“(400)Bad Request”。 我不知道為什么會這樣,而我目前仍停留在這一點上。 這是我的代碼,希望有人能幫助我:

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();
        }

當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."}

所以我想服務器需要一些會話ID參數與請求一起發送。 有關如何執行此操作的更多詳細信息,請查閱您嘗試調用的端點的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM