【问题标题】:Removing escape characters from a string (xml) and sending it to a WCF service从字符串 (xml) 中删除转义字符并将其发送到 WCF 服务
【发布时间】: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


【解决方案1】:

正如您在 cmets 中确认的那样,问题不在于转义字符(通常是在 VS 中的监视窗口将它们显示为好像它们被转义了一样),而是其他问题。

几乎在您遇到 WCF 服务向客户端返回 400 / 500 错误的问题时,enabling tracing 应该为您指出解决问题的正确方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2017-02-28
    • 2015-10-20
    相关资源
    最近更新 更多