C#从另一个类方法获取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

以前我在一个类中处理所有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, 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
}