[英]c# HTTP 400 error (Bad Request) thrown by HttpWebRequest (intermitent)
[英]HTTP 400 Bad Request Error C#
我遇到此错误:HTTP 400错误请求,可能是什么错误? 如何检查API的参数是否正确?
我尝试了在线建议的解决方案,但还是没有运气。 有人可以建议如何解决此问题吗?
string url = "/api/customers/reconnect/"; //sample url
string parameters = new JavaScriptSerializer().Serialize(new {
accountNumber = info.accountNumber,
serviceNumber = info.serviceNumber,
lastName = info.lastName,
processType = info.processType,
reconnectReason = info.reconnectReason,
priName = info.priName,
requestDate = info.requestDate,
Amount = info.amount,
Email = info.email,
priName2 = info.priName2,
withReconnectFee = info.withreconnectFee,
contactNo2 = info.contactNo2,
stmtFaxNo = info.stmtFaxNo
});
HttpVerb method = HttpVerb.POST;
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = method.ToString();
request.ContentLength = 0;
request.ContentType = ContentType;
request.Accept = "application/json";
var encoding = new UTF8Encoding();
var bytes = encoding.GetBytes(parameters); //Encoding.GetEncoding("iso-8859-1").GetBytes(parameters);
request.ContentLength = bytes.Length;
using (var writeStream = request.GetRequestStream())
{
writeStream.Write(bytes, 0, bytes.Length);
writeStream.Close();
}
using (var response = (HttpWebResponse)request.GetResponse())
{
var responseValue = string.Empty;
using (var responseStream = response.GetResponseStream())
{
if(responseStream != null)
using (var reader = new StreamReader(responseStream))
{
responseValue = reader.ReadToEnd();
}
}
if (response.StatusCode == HttpStatusCode.OK)
{
var jsonVal = JObject.Parse(responseValue);
result = (string)jsonVal["result"].ToString();
}
每当您看到包含三位数字的HTTP状态代码的错误时,表明您能够通过网络发送请求并获得响应。 状态代码实际上是由服务器提供的,而不是由.NET运行时或您身边的任何东西引发的。 (在某些情况下,状态码实际上可能来自您与服务器之间的设备,例如负载平衡器或网关,但这通常不是问题。)
要了解此类错误,您必须了解服务器。 在这种情况下,即使您提供了HTTP协议所需的所有标头,也可能遗漏了服务器认为是强制性的标头。 服务器可能不喜欢正文的内容。 服务器可能有错误。 真的可以是任何东西...在服务器上。
我们无法基于c#客户端代码来解决此问题。 您需要联系运行该服务的人员,并寻求他们的帮助。 他们可能能够查看自己身边的日志,以确定其服务器为何发布400状态代码。 或要求他们提供“已知良好”的请求消息示例(包括标题); 将其与您自己的消息进行比较,以查找可能导致问题的任何差异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.