簡體   English   中英

RestSharp 不返回任何響應

[英]RestSharp returns no response

我有一個使用 RestSharp (v107.3.0) 的 ASP.NET Core 6 項目。

有時,我不知道頻率如何,幸運的是它不經常,無論 API 發送什么,庫都會返回空響​​應和 0 響應狀態碼。

這是我的代碼:

private async Task<T> CallApi<T>(myConfig config,
    string suffixUrl,
    Method method,
    HttpStatusCode[] expectedResponses,
    string bodyParameter = null)
{
    Uri requestUrl = null;
    string responseContent = null;

    try
    {
        using (var client = new RestClient(_restClientOptions))
        {
            var request = new RestRequest(suffixUrl, method);
            request.Timeout = 15000;
            request.AddHeader("authorization", $"Basic {config.Auth}");
            request.AddHeader("content-type", "application/json");

            if (bodyParameter != null)
            {
                request.AddStringBody(bodyParameter, DataFormat.Json);
            }

            requestUrl = client.BuildUri(request);

            var response = await client.ExecuteAsync(request);

            // ->>>>>>> Sometimes response.Content equals null and response.statusCode = 0
            responseContent = response.Content;

            foreach (var expectedResponse in expectedResponses)
            {
                if (response.StatusCode == expectedResponse)
                {
                    switch (expectedResponse)
                    {
                        default:
                            Logger.LogInformation("reponse :{0}", responseContent);
                            var obj = JObject.Parse(responseContent);
                            return obj.ToObject<T>();
                    }
                }
            }

            Logger.LogWarning("Réponse innatendue lors d'un apel a l'api, Url={requestUrl}, BodyParameter={bodyParameter}, StatusCode={statusCode}, Reponse={Content}",
            requestUrl, bodyParameter, response.StatusCode, responseContent);
        }
    }
    catch (Exception ex)
    {
        //catch errors
        Logger.LogError(ex, "Erreur lors d'un apel a l'api, url={requestUrl}, BodyParameter={bodyParameter}, responseContent={responseContent}",
                requestUrl, bodyParameter, responseContent);
    }

    return default(T);
}

其他人是否已經有解決此問題的方法? 我的代碼有問題嗎?

謝謝你的幫助

我知道這不會是下一位讀者的完美答案,但就我而言,我決定刪除 Restsharp 庫並使用 HttpClient 進行調用。

暫無
暫無

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

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