gpt4 book ai didi

c# - HttpWebRequest GET 请求在处理时停止

转载 作者:行者123 更新时间:2023-12-03 05:59:34 25 4
gpt4 key购买 nike

我正在尝试通过我正在开发的 Windows Mobile 应用程序向我的后端发出 GET 请求。请求在中间停止并且未通过。没有错误就结束了。

这是我的代码:

public void LoginClick() {
var myTask = LoginUser(email, password);
string result = myTask.Result;
}

private async Task<string> LoginUser(string email, string password)
{
//Declarations of Variables
string result = "";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://MYmobileservice.azure-mobile.net/api/loginuser?email="+email+"&password="+password);
request.ContinueTimeout = 4000;

request.Credentials = CredentialCache.DefaultNetworkCredentials;

//Add headers to request
request.Headers["Content-Type"] = "application/json";
request.Headers["ACCEPT"] = "application/json";
request.Headers["X-ZUMO-APPLICATION"] = "<SERVER-KEY-THE-APP-NEEDS>";

using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
{
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
//To obtain response body
using (Stream streamResponse = response.GetResponseStream())
{
using (StreamReader streamRead = new StreamReader(streamResponse, Encoding.UTF8))
{
result = streamRead.ReadToEnd();
}
}
}
}

return result;
}

为什么没有完成就结束了?我的代码有什么问题吗?

最佳答案

您需要一直使用async。以下是重写事件处理程序的方法:

public async void LoginClick() {
string result = await LoginUser(email, password);
}

我假设 LoginClick 由委托(delegate)引用到 Login 按钮的 Click 事件。请注意,我使用 async 修饰符修饰了该方法。另请注意,代码现在正在等待LoginUser 返回的Task。您可能想要使用 LoginUserAsync 约定,但这不是必需的。

将代码包装在 try/catch block 中的 LoginUser 方法中。在 catch block 中设置断点以检查抛出的任何异常。您可以查看 HttpWebRequest 和相关类型的文档,了解它们可能抛出哪些异常。

很可能,只需使用正确的异步代码就能解决您的问题,因为调用 myTask.ResultmyTask.Wait() 会阻塞UI 线程,这是您最有可能出现的问题。

关于c# - HttpWebRequest GET 请求在处理时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483506/

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