使用 httpClient.GetAsync() 后无法从方法返回 HTTP 状态和数据

本文关键字:返回 方法 HTTP 状态 数据 GetAsync httpClient 使用 | 更新日期: 2023-09-27 18:32:40

我在使用以下代码时遇到问题。我正在检索一个 JSON 对象作为字符串,然后希望从我的方法返回它,以便它可以在其他地方使用。但是,当我这样做时,我收到消息:

'filmsGlossary.searchQuery.returnJson(object); return void,return 关键字后不得跟对象表达式"

public async void returnJson(object term)
    {
        //Set Variables
        var searchFormat = "&format=json";
        var termValue = term;         
        var httpClient = new HttpClient(); 
        try
        {                     
            //Set web service URL format
            string baseURI = "http://localhost/filmgloss/webService/web-service.php?termName=";
            string userURI = baseURI + termValue + searchFormat;
            //Send URL to web service and retrieve response code. 
            var response = await httpClient.GetAsync(userURI);
            response.EnsureSuccessStatusCode();
            var content = await response.Content.ReadAsStringAsync();
            return content.ToString(); 
        }
        catch (HttpRequestException hre)
        {               
        }
        catch (Exception ex)
        {
        }
}

原来我只是回来

return content;

但是阅读后,似乎问题可能是我需要将其更改为:

return content.ToString();

然而,这并没有帮助。我还读到我可以将其更改为同步而不是异步方法,并将该方法更改为"公共字符串",但是我只是在学习 c#,还没有完全理解它的含义(或如何做到这一点)。

是否可以在我已经拥有的代码中解决此错误?

我也想了解问题的原因,而不仅仅是知道解决方案。

谢谢。

使用 httpClient.GetAsync() 后无法从方法返回 HTTP 状态和数据

您确实应该粘贴收到的错误消息。

为什么你的函数声明返回void?它应该返回任务<string>。

public async Task<string> returnJson(object term)

同样在正文中,您应该返回任务,如下所示:

await response.Content.ReadAsStringAsync();