我已经检查了stackoverflow上的相关帖子,但是他们没有帮我解决问题。
我无法将数据发布到客户的网络服务。我不知道这是代码缺陷还是服务器端的某些问题。我们得到的响应是一个httpWebException,消息“服务器返回错误(400)错误请求”,httpWebException状态的值为ProtocolError。
有效负载是XML的一部分,请求ContentType是“text / xml; encoding ='utf-8'”。它也被描述为RESTful Web服务。
这里,如果它提供一些照明,是实际的C#代码:
XDocument xmlResponse = null;
//Post the xml to the web service
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
try
{
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(xmlRecord.ToString());
request.Method = "POST";
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(bytes, 0, bytes.Length);
}
//retrieve the response from the web service
Trace.Log("Examining web service response");
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode == HttpStatusCode.OK)
{
using (Stream responseStream = response.GetResponseStream())
{
string responseStr = new StreamReader(responseStream).ReadToEnd();
xmlResponse = XDocument.Parse(responseStr);
}
}
}
}
catch (WebException wex)
{
var m = wex.Message;
throw wex;
}
任何人都可以提出导致问题的原因吗?例如,我是否未能在httprequest上设置一些额外的属性? ContentType不适合发布吗?我应该添加从同一个Web服务获取数据,使用几乎相同的代码(除了方法设置为“POST”)完美地工作。只有在将XML发布回Web服务时才会出现此问题。 (XML是文档化XML结构的副本,因此我认为问题不在于此。)
TIA