我正在开发一个第三方运行.NET环境的项目,该项目提供通过HTTP发送和接收XML的REST样式服务。我的项目实际上完全是在一台单独的机器上使用Java。
我构建了系统的整个Java部分,假设POSTing或PUTing XML文档的内容类型标题等于“application / xml”就可以了(因为它是XML规范和相关RFC的一部分!)
无论如何,现在.NET团队说它必须是text / plain,否则他们的服务器将拒绝该请求,他们似乎无法或不知道如何更改它。
那么,使用普通/文本作为内容类型通过HTTP发送XML会有什么影响?是否有任何微妙的“陷阱”,或者没什么大不了的?
由于
答案 0 :(得分:4)
除非指定了charset参数,否则text / plain的charset为us-ascii。 mime类型中定义的charset优先于xml文档中定义的charset,因此如果xml文档不是us-ascii,则正确的客户端会错误地解析xml。
4.1.2 of RFC 2046表示对于text / plain,
默认字符集,必须在没有的情况下假定 charset参数是US-ASCII。
即使使用text / xml,默认字符集也是us-ascii,来自3.1 of RFC 3023部分,
符合[RFC2046],如果接收到带有的text / xml实体 charset参数省略,MIME处理器和XML处理器必须使用 “us-ascii”的默认字符集值
如果你使用指定了正确字符集的text / plain,现在指定charset两次,所以最好使用没有与之关联的默认字符集的application / xml,并让charset声明为xml文档。
这个here上有一篇有趣的帖子。
答案 1 :(得分:0)
请确保您以后可以追溯到此更改请求,以了解将内容类型设置为text / plain的原因。因此,如果您被查询,您可以查看代码并证明您的实现与原始意图的合理性。