C#从另一个类方法获取http响应
以前我在一个类中处理所有http请求,但我想将http登录功能移动到另一个类,但现在我无法访问http客户端C#从另一个类方法获取http响应,c#,C#,以前我在一个类中处理所有http请求,但我想将http登录功能移动到另一个类,但现在我无法访问http客户端响应。IsSuccessStatusCode 这是我的原始代码whic的作品 var http = new HttpClient(); var url = String.Format(shared.AppDetails.domainurl+"/v2auth/default/login"); var response2 = await http.PostAsync(url, credenti
响应。IsSuccessStatusCode
这是我的原始代码whic的作品
var http = new HttpClient();
var url = String.Format(shared.AppDetails.domainurl+"/v2auth/default/login");
var response2 = await http.PostAsync(url, credentials);
if (response.IsSuccessStatusCode)
{
//do after login stuff
}
现在我想将登录逻辑移动到另一个文件夹中的另一个类(auth->dbhelpers)
我如何再次获得HttpClient类型的返回响应?
我犯了一个错误
Task<Objct> does not contain defination for IsSuccessStatusCode
任务不包含IsSuccessStatusCode的定义
尝试将代码更改为等待异步方法,如下所示:
var responsefromhttplogin = await auth.dbhelpers.AuthHttp.loginAsync(login_username.Text, login_password.Password);
if (responsefromhttplogin.IsSuccessStatusCode)
{
//do after login stuff
}
现在,在添加后,等待此响应FromHttpLogin.IsSuccessStatusCode
应可访问
还可以更改返回
Task
的方法,而不是从loginAsync()
返回Task
,以访问任务的结果,您可以使用Task.result
我会考虑将你正在返回的类型从<代码>对象< /代码>改为<代码> HythPrimPosiSease< /C> >
让你的LogiSaNyc方法代替返回任务。当前您正在返回一个对象,然后您将有权访问IsSuccessStatusCode
class LoginHttp{
public static async Task<HttpResponseMessage> loginAsync(String username, String password)
{
var values = new Dictionary<string, string>
{
{ "username",username },
{ "password", password }
};
var credentials = new FormUrlEncodedContent(values);
var http = new HttpClient();
var url = String.Format(shared.AppDetails.domainurl + "/v2auth/default/login");
var response = await http.PostAsync(url, credentials);
return response;
}
从您的代码判断,您正在返回一个
任务
您应该抛出返回响应代码>as返回(HttpResponseMessage)响应代码>
或者将返回类型更改为Task
这是什么意思?你有例外吗?您是否返回了其他HttpStatusCode?我已使用responsefromhttplogin=wait…,升级了visual studio抛出的错误代码IsSuccessStatusCodetry代码>
var responsefromhttplogin = await auth.dbhelpers.AuthHttp.loginAsync(login_username.Text, login_password.Password);
if (responsefromhttplogin.IsSuccessStatusCode)
{
//do after login stuff
}
class LoginHttp{
public static async Task<HttpResponseMessage> loginAsync(String username, String password)
{
var values = new Dictionary<string, string>
{
{ "username",username },
{ "password", password }
};
var credentials = new FormUrlEncodedContent(values);
var http = new HttpClient();
var url = String.Format(shared.AppDetails.domainurl + "/v2auth/default/login");
var response = await http.PostAsync(url, credentials);
return response;
}
var responsefromhttplogin = await auth.dbhelpers.AuthHttp.loginAsync(login_username.Text, login_password.Password);
if (responsefromhttplogin.IsSuccessStatusCode)
{
//do after login stuff
}