我将带有 HttpPost 的 XML 发送到服务器。这曾经很好,我在项目的其他部分成功地做到了。
我使用 StringBuilder 创建 xml 请求,但由于我将字符串作为数据附加到节点,我从服务器上的解析器收到错误响应:
Invalid byte 2 of 2-byte UTF-8 sequence.
当我记录请求并在 w3c xml 验证器中检查它时,没有错误。
这是我的 Stringbuilder 方法的摘录(整个方法很大并且具有敏感数据):
StringBuilder baseDocument = new StringBuilder();
baseDocument.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><setDisposalRequest><customer><company><![CDATA[");
baseDocument.append(company);
baseDocument.append("]]></company>");
baseDocument.append("<firstName><![CDATA[");
baseDocument.append(name);
baseDocument.append("]]></firstName>");
...
一旦我用硬编码的字符串替换了我附加的字符串变量,一切正常
IE
baseDocument.append(name);
到
baseDocument.append("name");
所有的字符串都有值,它们都不是 null 或者是空的!
在请求之前我将 StringEntity 设置为 xml
se.setContentType("application/xml");
我错过了什么?!?