我的问题
我有我的通用Windows应用程序,我想使用rest api。我总是收到错误CS 4032:
httpResponseBody = await httpClient.GetStringAsync(requestUri);
就像你不能在它不异步时调用该方法一样。
整个代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Net;
using Windows.Web.Http;
namespace UniversalCA
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Send();
}
public string Send()
{
HttpClient httpClient = new HttpClient();
Uri requestUri = new Uri("http://restapic.azurewebsites.net/WebForm1.aspx?func=dd&hodn=WW");
HttpResponseMessage httpResponse = new HttpResponseMessage();
string httpResponseBody = "";
try
{
httpResponseBody = await httpClient.GetStringAsync(requestUri);
}
catch (Exception ex)
{
httpResponseBody = "Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message;
}
string tt = httpResponseBody.Split('>')[1].Split('<')[0];
return httpResponseBody;
}
}
}
问题是你不能在 not async
函数中使用await
关键字。您的Send
函数在声明中没有async
关键字。添加async
关键字将解决问题
public async Task<string> Send()
只是为了补充@Ruben瓦尔达尼扬人的答案。
只是:添加using System.Threading.Tasks;
在 Send(( 上添加Wait()
关键字;调用
public MainPage()
{
this.InitializeComponent();
Send().Wait();
}
最后是你的 Send(( 方法添加async Task<T>
public async Task<string> Send()
请查看此答案以调用构造函数中的异步方法。在构造函数中调用异步方法?
不要使用 await Send();
调用该方法,您将遇到编译器错误。