簡體   English   中英

Flurl POST 上不支持的授權類型異常

[英]Unsupported grant type exception on Flurl POST

我正在使用編碼的身份驗證標頭對客戶端身份驗證端點進行 POST,並且收到不支持的授權類型異常。 與客戶交談時,他們說請求正文應該是“原始”,因為它出現在 POSTMAN 中。 如何在 Flurl 中設置這樣的屬性? 相同的請求在 POSTMAN 中返回 200,但在 Flurl 中返回 401,Unsupported grant type exception。

var bodyText = @"grant_type=password&username=hi@api.com&password=123456A";
   var encodedAuthHeaderText = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{clientId}:{secret}"));
            var response = await Post<ResponseAuth>(bodyText, tokenEndPoint, $"Basic {encodedClientIdSecret}",
                cancellationToken);


   private async Task<T> Post<T>(string bodyText, string resourceEndPoint, string encodedAuthHeaderText,
            CancellationToken cancellationToken)
        {
            var response = default(T);
            try
            {
                response = await $"{_baseEndPoint}{resourceEndPoint}"
                    .WithHeader("Authorization", encodedAuthHeaderText)
                    .WithHeader("Accept", "*/*")
                    .WithHeader("Content-Type", "application/x-www-form-urlencoded")
                    .WithHeader("Accept-Encoding", "gzip, deflate, br")
                    .PostJsonAsync(bodyText, cancellationToken).ReceiveJson<T>();
            }
            catch (FlurlHttpException fe)
            {
                var error = await fe.GetResponseJsonAsync();
                if (fe.StatusCode != null)
                    throw new CounterPartyIppQuoteException((HttpStatusCode) fe.StatusCode, fe,
                        $"Error encountered when making a POST request to {resourceEndPoint} with auth header to IPP");
            }

            return response;
        }

我認為問題在於您正在調用PostJsonAsync 這告訴 Flurl 對正文進行 JSON 編碼,並且由於您傳遞的是字符串而不是對象,因此它可能只是在它周圍加上引號,這是您不想要的。 你已經指定了 Content-Type 並完全按照你想要的方式格式化了正文,所以使用 Flurl 的PostStringAsync而不是PostJsonAsync ,我認為它應該可以工作。

作為旁注,您可以在這里使用幾個 Flurl 快捷方式,即WithBasicAuth (而不是您的第一個WithHeader ),它只需要一個用戶名和密碼並為您進行編碼並添加標題,以及PostUrlEncodedAsync產生那個bodyText基於更簡潔的 C# 對象,並為您設置 Content-Type 標頭。 有關兩者的示例,請參閱文檔

暫無
暫無

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

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