我正在开发一个项目,其中第三方运行.NET环境,提供通过HTTP发送和接收XML的REST样式服务.我的项目实际上完全是在一台单独的机器上使用Java.
我构建了系统的整个Java部分,假设POSTing或PUTing XML文档的内容类型标题等于“application / xml”就可以了(因为它是XML规范和相关RFC的一部分!).
无论如何,现在.NET团队说它必须是text / plain,否则他们的服务器将拒绝该请求,他们似乎无法或不知道如何更改它.
那么,使用普通/文本作为内容类型通过HTTP发送XML会有什么影响?有任何微妙的“陷阱”,还是没什么大不了的?
谢谢
解决方法:
除非指定了charset参数,否则text / plain的charset是us-ascii. mime类型中定义的charset优先于xml文档中定义的charset,因此如果xml文档不是us-ascii,则正确的客户端会错误地解析xml.
4.1.2 of RFC 2046声明对于text / plain,
The default character set, which must be assumed in the absence of
a charset parameter, is US-ASCII.
即使使用text / xml,默认字符集也是us-ascii,来自3.1 of RFC 3023部分,
Conformant with [RFC2046], if a text/xml entity is received with the
charset parameter omitted, MIME processors and XML processors MUST use
the default charset value of “us-ascii”
如果你使用指定了正确字符集的text / plain,现在指定charset两次,所以最好使用没有与之关联的默认字符集的application / xml,并让xml文档声明charset .
这个here有一篇有趣的帖子.