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())
我不知道如何解决问题,有人可以帮助我吗? 如果您需要更多相关信息,请与我们联系。
答案 0 :(得分:1)
此异常表示请求已成功完成,但返回了400 HTTP响应。 400 HTTP响应通常意味着您的客户端没有发送正确的数据,但是它完全取决于目标服务器,在什么情况下会返回400响应。
如果你抓住WebException
,可以使用Response属性查看HTTP响应 - 取决于服务器,它可能包含错误描述。
如果目标服务的正常做法是返回400响应,那么请查看Why does HttpWebRequest throw an exception instead returning HttpStatusCode.NotFound?以获取可用于获取响应的扩展方法,而不管状态代码如何。或者,您可以使用不抛出的替代类,例如HttpClient
。