You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用EventStore HTTP API获取持久化订阅事件返回XML而非JSON求助

排查EventStore HTTP API返回XML而非JSON的问题

调用EventStore HTTP API获取持久化订阅事件时,请求可正常执行,但返回结果为XML格式,而非预期的JSON格式。

请求信息

> GET /subscriptions/integration-2023-05-31/Test1_Subscription HTTP/2
> Host: [removed].germanywestcentral.cloudapp.azure.com:2113
> user-agent: insomnia/2023.2.2
> content-type: application/vnd.eventstore.competingatom+json
> authorization: Basic [removed]
> accept: */*

响应信息

HTTP/2 200 
< content-type: application/vnd.eventstore.competingatom+xml; charset=utf-8
< date: Wed, 31 May 2023 13:14:01 GMT
< server: Kestrel
< access-control-allow-headers: Content-Type, X-Requested-With, X-Forwarded-Host, X-Forwarded-Prefix, X-PINGOTHER, Authorization, ES-LongPoll, ES-ExpectedVersion, ES-EventId, ES-EventType, ES-RequireMaster, ES-RequireLeader, ES-HardDelete, ES-ResolveLinkTos
< access-control-allow-methods: PUT, POST, DELETE, GET, GET, OPTIONS
< access-control-allow-origin: *
< access-control-expose-headers: Location, ES-Position, ES-CurrentVersion
< content-length: 2033

问题原因

你误用了Content-Type头来指定期望的响应格式,但GET请求的Content-Type头不影响响应格式——这个头仅用于告知服务器你发送的请求体类型,而GET请求通常没有请求体。

EventStore的Competing Atom API依赖Accept头协商响应格式,当Accept设为*/*时,服务器会默认返回XML格式。

解决方案

将请求的Accept头修改为application/vnd.eventstore.competingatom+json,同时可以移除不必要的Content-Type头(GET请求无需该头),修改后的请求头如下:

> GET /subscriptions/integration-2023-05-31/Test1_Subscription HTTP/2
> Host: [removed].germanywestcentral.cloudapp.azure.com:2113
> user-agent: insomnia/2023.2.2
> authorization: Basic [removed]
> accept: application/vnd.eventstore.competingatom+json

修改后,服务器会根据Accept头返回JSON格式响应,响应的Content-Type也会变为application/vnd.eventstore.competingatom+json。

内容的提问来源于stack exchange,提问作者Sebastian Schabbach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:22:47