我正在尝试向我的WCF服务发出POST http请求,并以XML格式发送一些数据。我尝试使用XmlWriter和字符串连接构建XML字符串,但我总是在字符串中转义字符(\“和其他),因此我的POST失败。
这是我构建XML字符串的方式:
var data = string.Empty;
data += (@"<Root xmlns=""http://schemas.datacontract.org/2004/07/..."" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">");
data += (String.Format("<Element1>{0}</Element1>", element1));
data += (String.Format("<Element2>{0}</Element2>", element1));
data += (String.Format("<Element3>{0}</Element3>", element1));
data += (String.Format("<Element4>{0}</Element4>", element4));
data += (String.Format("</Root>"));
由于xmlns属性及其值,我得到了Root元素中的字符。这就是我的POST alaways返回400 Bad Request的原因。这就是我发布POST的方式:
var req = WebRequest.Create(uri);
req.ContentType = "application/xml; charset=utf-8";
req.Method = "POST";
var bytes = Encoding.UTF8.GetBytes(data);
req.ContentLength = bytes.Length;
var os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Flush();
os.Close();
var response = _GetResponseString(req.GetResponse());
return response;
如何清除不需要的字符并使此POST工作?
答案 0 :(得分:1)
正如你在评论中所证实的那样,问题不在于逃脱的角色(VS通常是红色鲱鱼,VS中的观察窗口显示它们就好像被转义一样),而是其他东西。
在WCF服务向客户端返回400/500错误的问题中,enabling tracing几乎所有时间都应指向正确的方向来解决问题。