XML上传返回400需检查格式合法性:命名空间、根元素名、必填字段及类型、Content-Type头、UTF-8编码声明;415错误需确认API接受的XML子类型并启用服务端XML解析;500错误应排查服务端日志、最小化XML测试、空标签写法及签名原文空白字符。
多数情况下,400 Bad Request不是网络问题,而是XML本身格式或语义不合法。服务端在解析前就拒绝了请求。
而非 )100.5 不能写成 one hundred)curl -v 或浏览器开发者工具查看完整请求头,确保 Content-Type 是 application/xml 或 text/xml,不是 application/json
这个错误明确指向服务端不接受你发的格式——哪怕XML语法完全正确也会触发。
application/vnd.myapi.v2+xml,而你发了 application/xml
@EnableWebMvc + 添加 Jaxb2RootElementHttpMessageConverter
requests,别只设 headers={'Content-Type': 'application/xml'},还要确保 data 是字符串而非字典(否则会自动转JSON)这时问题大概率不在你这端,但可以快速

org.xml.sax.SAXParseException 或 javax.xml.bind.UnmarshalException 类错误。
和 在某些老系统中处理行为不同避免依赖GUI工具或SDK封装,直接用 curl 可最短路径暴露问题。
-v 查看完整请求/响应,重点关注 > POST 和 行
payload.xml),用 --data-binary @payload.xml 发送,避免shell对尖括号做解释-H "Authorization: Bearer xxx" 而非 -u,后者只适用于Basic Authcurl -v -X POST https://api.example.com/orders \ -H "Content-Type: application/xml" \ -H "Authorization: Bearer eyJhbGciOi..." \ --data-binary @payload.xml真正卡住的时候,往往不是XML写错了,而是你没看到服务端返回的
X-Request-ID 或响应体里的具体错误描述。很多API在5xx时仍会返回带提示的XML或JSON body,别只盯着状态码。