C#GetResponseAsync():如何正确使用
我正在使用TwitchAPI开发一个应用程序,并尝试使用异步请求 我以前使用同步请求进行测试,如下所示:C#GetResponseAsync():如何正确使用,c#,exception,asynchronous,C#,Exception,Asynchronous,我正在使用TwitchAPI开发一个应用程序,并尝试使用异步请求 我以前使用同步请求进行测试,如下所示: private async static Task<string> generalRequest(string url, string method, object payload = null, string accessToken = null, API api = API.V5, string clientId = null) { url = appendClien
private async static Task<string> generalRequest(string url, string method, object payload = null, string accessToken = null, API api = API.V5, string clientId = null)
{
url = appendClientId(url, ClientId);
var request = WebRequest.CreateHttp(url);
request.Method = method;
request.ContentType = "application/json";
var response = request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string data = await reader.ReadToEndAsync();
return data;
}
}
using (var response2 = await request.GetResponseAsync())
{
using (var reader = new StreamReader(response2.GetResponseStream()))
{
string data = await reader.ReadToEndAsync();
return data;
}
}
但是,它从未使用通过第一个,我得到了以下例外:
异常级别:mscorlib.dll中的“System.Net.WebException”
异常级别:LivestreamerTwitchViewer.exe中的“System.Exception”
异常级别:mscorlib.dll中的“System.Exception”
那我做错了什么
如何正确使用GetResponseAsync()
提前感谢您的帮助。请显示异步方法签名。看到完整的身体也没什么坏处。@Karolis-我唯一的猜测是OP使用的方法与以前相同,但将var request=request.GetResponse()
替换为return
语句,并在第二个代码块中使用(…)
语句。除非方法和/或正文的其余部分不同,否则我认为发布第二次尝试的完整方法正文是不必要的。@GeoffJames如果是这样,那么我能想到的唯一问题是API中的错误,这是不可能的。这就是我请求的理由。另外,关于异步/异步方法,在返回不同底层任务类型的情况下,方法的签名也很重要,尽管这是一个很长的过程。:)@我不同意。API不会区分代码中的同步/异步请求。这与API本身无关,除非请求本身在方法的异步版本中确实发生了轻微的更改。@0_yami_0-您是否能够检查您正在接收的System.Net.WebException
并查看其中是否有稍多的描述错误消息,你可以在你的问题中发表?