spring - 如何在应用程序/xml中接受假装响应
问题描述
我正在调用以 XML 格式返回响应的第 3 方 API。由于我没有创建任何 POJO 来在我使用java.lang.Object
的消费者服务中保持响应。
我收到以下错误。
org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class java.lang.Object] and content type [application/xml]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:126) ~[spring-web-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.cloud.openfeign.support.SpringDecoder.decode(SpringDecoder.java:59) ~[spring-cloud-openfeign-core-2.2.5.RELEASE.jar:2.2.5.RELEASE]
at org.springframework.cloud.openfeign.support.ResponseEntityDecoder.decode(ResponseEntityDecoder.java:62) ~[spring-cloud-openfeign-core-2.2.5.RELEASE.jar:2.2.5.RELEASE]
我的假客户端代码
@FeignClient(value = "SERVICE", url = "https://goog.dummyservice/api1/v1", decode404 = true)
public interface UserFeign {
@GetMapping(value = "/docs/{profile}/{protocol}", consumes = MediaType.APPLICATION_XML_VALUE)
Object getUserData(@RequestHeader("Authorization") String token,
@PathVariable("profile") String profile,
@PathVariable("protocol") String protocol);
}
我想知道如何通过 feign 来保存 XML 响应。
解决方案
FeignClientConfiguration.java
@Configuration
@RequiredArgsConstructor
public class FeignClientConfiguration {
private final ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
public Encoder feignFormEncoder() {
return new FormEncoder(new SpringEncoder(messageConverters));
}
/*@Bean
public Decoder feignDecoder() {
MappingJackson2XmlHttpMessageConverter c = new MappingJackson2XmlHttpMessageConverter();
ObjectFactory<HttpMessageConverters> objectFactory = () ->new HttpMessageConverters(c);
return new ResponseEntityDecoder(new SpringDecoder(objectFactory));
}*/
}
咨询客户端.java
@FeignClient(url = "${api.serpro.url}",
name = "name",
configuration = FeignClientConfiguration.class)
public interface ConsultaClient {
@PostMapping(consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
@Headers("Content-Type: application/x-www-form-urlencoded")
List<DocumentoDTO> getData(ParamsDTO params);
}
推荐阅读
- java - 用户单击 autoCompleteEditText 时清除 drawableLeft(非背景)
- javascript - 如何使用 LitElement 将道具从父母发送给孩子
- c# - 是否可以根据枚举输入返回泛型类?
- excel - VBA Xmatch 函数返回运行时错误 1004
- ios - ViewController 的标题意外消失
- r - 森林图,对多个变量进行排序和汇总
- google-bigquery - 将旧日志从 Stackdriver 导出到 Bigquery
- python - 使用 Python 对列中的多个值进行复杂的提取和转换
- javascript - Leaflet-React:L 未定义
- reactjs - 构建受保护的路线时,反应应用程序中没有历史记录属性