【发布时间】:2011-08-24 10:24:15
【问题描述】:
我正在尝试向我的 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 总是返回 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 工作?
【问题讨论】:
-
你确定你得到 \" 字符?还是数据的监视窗口显示?尝试在服务器端启用跟踪以查看服务器究竟抱怨什么以考虑请求不好。
-
是的,你是对的,不是因为 \" 字符,消息太大。谢谢!
标签: xml wcf http service http-post