JiuyeXD's Blog
九叶
九叶博主

越努力 越幸运

登录
夜间

OpenFeign请求ASP.NET输出json后缀多出{"d":null}解决方案

1. 问题

今天使用openFeign对接中石油API的时候发现接口返回值后面总是追加{"d":null}导致接口无法正常解析。

空返回携带

正常返回携带

2. 解决方案

翻阅资料得知是因为 request的header的content-type设置成application/json导致的,将其修改为 text/plain; charset=utf-8 即可。

这样修改完之后又遇到新问题

Could not write request: no suitable HttpMessageConverter found for request type [com.alibaba.fastjson.JSONObject] and content type [text/plain;charset=utf-8]

网页返回无法解析,这个时候我们就需要重写HttpMessageConverter的处理方法,代码如下

package com.healai.mentaleapexternal.config;

import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;

import java.util.Collections;

/**
 * <p>
 * FeignConfig - 配置返回体解析
 * </p>
 *
 * @author JiuyeXD
 * @version 1.0
 * @since 2023/8/17
 */
@Component
public class FeignConfig {
	/**
	 * Could not write request: no suitable HttpMessageConverter found for request type [com.alibaba.fastjson.JSONObject] and content type [text/plain;charset=utf-8]
	 */
	@Bean
	public MappingJackson2HttpMessageConverter customMappingJackson2HttpMessageConverter() {
		return new CustomMappingJackson2HttpMessageConverter();
	}
	static class CustomMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
		public CustomMappingJackson2HttpMessageConverter() {
			setSupportedMediaTypes(Collections.singletonList(MediaType.TEXT_PLAIN));
		}
	}
}

至此问题成功得到解决

THE END