- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 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/
我有一种使用 Google API 翻译文本的工作方法,如下所示; public string TranslateText(string input, string sourceLanguage, s
我有(我的 url 列表大约有 1000 个 url),我想知道是否有更有效的调用来自同一站点的多个 url(已经更改 ServicePointManager.DefaultConnectionLim
新的 ASP.NET Web API HttpClient 一直给我一些奇怪的结果。这是我的代码: class Program { static async void Main(string[
using System.Net.Http; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Threading.
我正在尝试使用 GetStringAsync 方法访问我的 url,但调用挂起并且永远不会结束。当我在浏览器中检查它时它工作完美但不知何故在我的代码中它永远不会结束。我的代码: public bool
我正在使用 Windows Phone/Store 应用程序的新运行时开发 Windows 通用应用程序。我正在使用以下代码向服务器发送请求并期待返回 HTML 响应。但是,当我返回字符串并将其显示在
我认为 HttpClient 应该能够处理 301 错误代码,并重定向到正确的地址。但是对于以下地址 ( https://www.npr.org/templates/rss/podcast.php?i
我有一个控制台应用程序,用户输入一个字符串(一个数字,例如“1”),我根据输入的数字发出GET请求,并返回GET的字符串结果。 我想异步执行,因为一般来说,所有 I/O 操作都应该是异步的,所以我基本
我有以下内容,我尝试从服务器下载一个字符串: HttpClient client = new HttpClient(); var getResponsestring = await client.Ge
我有一个 Windows Phone 8 项目,我也开始使用 PCL(可移植类库)项目,因为我要构建一个 Win8 应用程序。 但是,在调用我的 api(在 Azure 中)时,我的 HttpClie
我是 C# 的新手,更不用说 Windows Phone 开发了:) 我正在尝试发送请求,获取 JSON 响应,但如果出现错误(例如 401),则能够告诉用户此类。这是我的代码: async Task
如果你有以下方法: public async Task GetTAsync(url) { return await httpClient.GetStringAsync(url); } publ
我真的是 Xamarin 开发的新手,我刚刚尝试使用 Xamarin.Forms 来使用共享代码开发 Android 和 iOS 应用程序,我在这里要做的是使用 Plugin.RestClient N
最近,我开发了一个WP8的应用程序,一开始一切正常。但是,从昨天晚上开始,我在尝试从 url 检索 RSS 数据 时遇到错误。 这是我用来获取数据的部分代码: try { HttpClient
在winform中,点击按钮调用此方法将链接内容下载为字符串,然后在文本框中显示字符串长度。这一切都是异步发生的。有没有办法同步执行此操作? 最佳答案 您可以通过获取.Result来创建任何任务 bl
我正在关注这个 blog post关于如何在 ASP.NET Web API 2 中使用批处理支持。服务器代码似乎可以工作并监听端口 12345。 当我运行客户端代码时,它到达这一行: dynam
我有以下代码 static void Main(string[] args) { string url = "http://www.google.com"; Conso
本文转载自微信公众号「汪宇杰博客」,作者汪宇杰。转载本文请联系汪宇杰博客公众号。 在 ASP.NET Core 单元测试中模拟HttpClient.GetStringAsync()
我正在创建一个新的 Windows 8.1 应用程序,只是为了测试我遇到的这个错误。该应用只有一个功能: private async void TestMethod() {
我是一名优秀的程序员,十分优秀!