C# 如何将帖子的状态代码获取到web api

C# 如何将帖子的状态代码获取到web api,c#,asp.net,api,httprequest,httpresponse,C#,Asp.net,Api,Httprequest,Httpresponse,因此,我的框上有一个URL,当我使用JSON对象(“用户名、密码和应用程序ID”)发布到它时,它将返回状态代码200、400、505等。。。当我使用Chromes Advanced Rest客户端发布到url时,一切正常。因此,我决定创建一个单页web应用程序项目,该项目将有一个登录名,可以发布到此url。现在我的问题是,我不知道如何获取响应状态代码。每次我发送请求时,它都会点击dispose,因此我无法获取响应的状态代码 我在想办法获取响应的状态码,这让我不知所措。我要做什么才能掌握状态码。到

因此,我的框上有一个URL,当我使用JSON对象(“用户名、密码和应用程序ID”)发布到它时,它将返回状态代码200、400、505等。。。当我使用Chromes Advanced Rest客户端发布到url时,一切正常。因此,我决定创建一个单页web应用程序项目,该项目将有一个登录名,可以发布到此url。现在我的问题是,我不知道如何获取响应状态代码。每次我发送请求时,它都会点击dispose,因此我无法获取响应的状态代码

我在想办法获取响应的状态码,这让我不知所措。我要做什么才能掌握状态码。到目前为止,我已经尝试使用WebClient、HttpWebRequest和HttpRequest。所有这些最后都被处理掉了,我无法得到回应。现在我真的不知道该怎么办。如果你能给我指出正确的方向,我将不胜感激

 public class ValidationController : ApiController
{
    // POST api/account
    /// <summary>
    /// This will return a 200 and a JWT token if successful
    /// </summary>
    /// <param name="value">Json '{"Username":"[your_username]", "Password":"[your_password]","Application":"[your_application_name]"}'</param>
    /// <returns>OnSuccess 200 and JWT token, OnFailure 401 and nothing else</returns>
    public HttpResponseMessage Post([FromBody]Login login)
    //public HttpResponseMessage Post([FromBody]string value)
    {
        //var login = new Login();
        if (Request.RequestUri.Scheme != "https")
        {
            return Request.CreateResponse<string>(HttpStatusCode.HttpVersionNotSupported, "Authentication Failed.  Must use HTTPS.");
        }
        if (login == null)
        {
            return Request.CreateResponse<string>(HttpStatusCode.BadRequest, "The login piece is null");
        }
        if (Authenticate(login) == "-1")
        {
            return Request.CreateResponse<string>(HttpStatusCode.Unauthorized, "Authentication Failed");
        }
        return CreateToken(login);
    }
公共类验证控制器:ApiController
{
//邮政署署长/帐户
/// 
///如果成功,这将返回一个200和一个JWT令牌
/// 
///Json“{“用户名”:“[您的用户名],“密码”:“[您的密码],“应用程序”:“[您的应用程序名称]”}”
///OnSuccess 200和JWT令牌、OnFailure 401和其他
公共HttpResponseMessage帖子([FromBody]登录)
//公共HttpResponseMessage Post([FromBody]字符串值)
{
//var login=new login();
if(Request.RequestUri.Scheme!=“https”)
{
return Request.CreateResponse(HttpStatusCode.HttpVersionNotSupported,“身份验证失败。必须使用HTTPS”);
}
if(login==null)
{
return Request.CreateResponse(HttpStatusCode.BadRequest,“登录条为空”);
}
如果(验证(登录)=“-1”)
{
return Request.CreateResponse(HttpStatusCode.Unauthorized,“身份验证失败”);
}
返回CreateToken(登录);
}

}

以下是如何使用
HttpClient
执行此操作:

Web API

public HttpResponseMessage Get()
        {
            HttpResponseMessage response;

            var students = _starterKitUnitOfWork.StudentRepository.Get();

            if (students == null)
            {
                response = new HttpResponseMessage(HttpStatusCode.NotFound);
            }
            else
            {
                response = Request.CreateResponse(HttpStatusCode.OK, students);
                response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
            }
            return response;
        }
MVC客户端:

     public async Task<IEnumerable<Student>> GetStudents()
            {           
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(ConfigurationManager.AppSettings["BaseAddress"]);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    var response = await client.GetAsync("student").ConfigureAwait(false);
                    var statusCode = response.StatusCode; //HERE IT IS
                    return response.Content.ReadAsAsync<IEnumerable<Student>>().Result;
                    }    
            }
公共异步任务GetStudents() { 使用(var client=new HttpClient()) { client.BaseAddress=新Uri(ConfigurationManager.AppSettings[“BaseAddress]”); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”); var response=await client.GetAsync(“学生”).ConfigureAwait(false); var statusCode=response.statusCode;//在这里 返回response.Content.ReadAsAsync().Result; } }
HttpWebRequest
提供了一个
HttpWebResponse
,这可能是您所需要的。是的,我试过了,但当我尝试获取响应时,它会触发dispose,而我永远无法查看响应。这是我的问题。所有这些简单的解决方案都有,但由于某些原因,一切都会引发dispose。您应该编辑一段简短但完整的代码,以解决我将要尝试解决的问题。我不需要返回一个对象,但如果我能得到响应代码,这可能就是我所需要的一切。@DeadlyChambers…只要删除对象内容,你就可以了。我把它放在那里以防万一。太棒了,你知道SSL吗?我收到此错误消息“基础连接已关闭:无法为SSL/TLS安全通道建立信任关系”。我必须使用https。我想我可能需要对证书做些什么。@DeadlyChambers…酷…你可能应该为SSL的东西打开另一个问题。