使用FhirClient创建Binary资源时触发UnsupportedMediaType错误求助
问题原因及解决办法
核心问题
你遇到的UnsupportedMediaType错误,大概率是因为FhirClient发送请求时的HTTP Content-Type头设置错误,和Postman的正确请求头不匹配。
虽然你用binary.ToJson()输出的内容在Postman里能正常提交,但Postman会正确设置请求头(比如application/fhir+json),而FhirClient在处理Binary资源时,可能犯了两个常见错误:
- 默认使用XML格式发送请求,而服务器只接受JSON格式
- 错误地将
Binary资源的contentType字段值(也就是application/pdf)当成了HTTP请求的Content-Type头,而服务器期望的是FHIR资源本身的媒体类型(比如application/fhir+json)
具体解决步骤
1. 初始化FhirClient时指定JSON格式
确保客户端默认用JSON格式发送资源:
var clientSettings = new FhirClientSettings { PreferredFormat = ResourceFormat.Json }; var fhirClient = new FhirClient("你的FHIR服务器地址", clientSettings);
2. 强制覆盖请求头(针对服务器对Binary资源的特殊要求)
如果上面的设置无效,直接拦截请求并手动设置正确的Content-Type:
fhirClient.OnBeforeRequest += (sender, e) => { // 明确设置请求头为FHIR JSON格式 e.RawRequest.ContentType = "application/fhir+json; charset=utf-8"; };
3. 验证请求内容
可以通过FhirClient的日志功能(或抓包工具)确认发送的请求头和内容,对比Postman的请求,确保两者的Content-Type和请求体完全一致。
内容的提问来源于stack exchange,提问作者Steve Borman
相关产品推荐
相关产品推荐

