c#System.Net.WebException:'远程服务器出错:(400)错误请求。' - HttpWebResponse

时间:2017-05-10 11:23:30

标签: c# http

        var url = ConfigurationManager.AppSettings["URL"] + "/Archivador/MoverEnvio";

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

        if (Certificado != null)
        {
            // Y añadirlo a la petición HTTP
            req.ClientCertificates.Add(Certificado);
        }

        req.Method = "PUT";
        req.ContentType = "application/json";

        ArchivadorModelPut Mover = new ArchivadorModelPut()
        {
            ID_ARCHIVADOR = idArchivador,
            ID_ENVIO = idEnvio

        };
        using (var streamWriter = new StreamWriter(req.GetRequestStream()))
        {
            string json = JsonConvert.SerializeObject(Mover);

            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }
        using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
        {
            StreamReader reader = new StreamReader(resp.GetResponseStream());
            var dato = reader.ReadToEnd();
            string returnString = resp.StatusCode.ToString();
        }

我有这个例外:

  

System.Net.WebException:'远程服务器出错:(400)错误   。请求'

在线:

using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())

我不知道如何解决问题,有人可以帮助我吗? 如果您需要更多相关信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

此异常表示请求已成功完成,但返回了400 HTTP响应。 400 HTTP响应通常意味着您的客户端没有发送正确的数据,但是它完全取决于目标服务器,在什么情况下会返回400响应。

如果你抓住WebException,可以使用Response属性查看HTTP响应 - 取决于服务器,它可能包含错误描述。

如果目标服务的正常做法是返回400响应,那么请查看Why does HttpWebRequest throw an exception instead returning HttpStatusCode.NotFound?以获取可用于获取响应的扩展方法,而不管状态代码如何。或者,您可以使用不抛出的替代类,例如HttpClient

相关问题