为何调用Exact Online API时原返回JSON结果现变为XML?
解决Exact Online API返回XML而非JSON的问题
- 强制指定请求头的Accept参数
Exact Online API依赖请求头里的Accept字段确定返回格式,之前的请求默认带了application/json才会返回JSON,现在大概率是这个请求头丢失或被篡改了。不管是用Postman测试还是项目代码,都要明确添加:Accept: application/json
比如在Postman的Headers面板新增这个键值对,代码里(以Python requests为例)就写:
headers = { "Accept": "application/json", "Authorization": "Bearer 你的令牌" } response = requests.get(你的API地址, headers=headers)
在URL中添加$format参数强制指定格式
如果请求头设置后还是不行,可以直接在查询URL末尾追加&$format=json,强制API返回JSON格式。修改后的请求示例:https://start.exactonline.be/api/v1/xxxxxx/salesinvoice/SalesInvoices?$filter=InvoiceID eq guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'&$select=InvoiceID&$format=json排查账号侧的默认设置(需账号权限)
虽然你没有账号权限,但部分情况下Exact Online会为应用或用户设置默认返回格式。可以联系拥有账号权限的同事,检查后台集成设置里是否有相关配置被修改。关于API隐性变更
不排除官方做了未公示的默认格式调整,但上面两个强制指定格式的方法基本能覆盖这种情况,无需纠结变更细节,先解决问题为主。
内容的提问来源于stack exchange,提问作者Reinier
相关产品推荐
相关产品推荐

