gpt4 book ai didi

c# - 读取来自 HttpClient.GetStringAsync 的响应

转载 作者:太空狗 更新时间:2023-10-30 00:31:15 26 4
gpt4 key购买 nike

我正在使用 Windows Phone/Store 应用程序的新运行时开发 Windows 通用应用程序。我正在使用以下代码向服务器发送请求并期待返回 HTML 响应。但是,当我返回字符串并将其显示在 UI 中时,它只是说:

“System.Threading.Tasks.Task'1[System.String]”

它没有向我显示应返回的实际 HTML/XML。当我在普通 Windows 窗体应用程序中使用相同的 URL 时,它会返回我期望的数据,但我在那里使用的代码不同,因为它是 Win32 而不是 WinRT/这个新的 RT。

这是我的代码。我怀疑我没有以正确的格式或其他方式返回数据,但我不知道我应该做什么。

var url = new Uri("http://www.thewebsitehere.com/callingstuff/calltotheserveretc");
var httpClient = new HttpClient();

try
{
var result = await httpClient.GetStringAsync(url);
string checkResult = result.ToString();
httpClient.Dispose();
return checkResult;
}
catch (Exception ex)
{
string checkResult = "Error " + ex.ToString();
httpClient.Dispose();
return checkResult;
}

最佳答案

我认为问题不在这段代码中,而在调用者中。我怀疑此代码在返回任务的方法中(正确以便调用方可以等待此方法的 HttpClient 调用工作)但调用方并未等待它。

代码片段看起来正确并且与 https://msdn.microsoft.com/en-us/library/windows/apps/windows.web.http.httpclient.aspx 上的文档基本相同. GetStringAsync 返回一个任务。 await 将处理 Task 部分并将一个字符串返回到 var 结果中。如果您进入函数并检查 result 或 checkResult,它们将是所需的字符串。

调用者也需要做同样的事情。如果这是在函数中

Task<string> GetData() 
{
// your code snippet from the post
return checkResult; // string return is mapped into the Task<string>
}

然后需要用 await 调用它来获取字符串而不是任务,并等待 GetData 的内部 await 完成:

var v = GetData(); // wrong <= var will be type Task<string>
var data = await GetData(); // right <= var will be type string

您唯一不会等待 Task 的情况是您需要操作 Task 本身而不仅仅是获取结果。

关于c# - 读取来自 HttpClient.GetStringAsync 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com