Java OpenFeign客户端不';“不适用”;“内容类型”;报头值:响应为415

Java OpenFeign客户端不';“不适用”;“内容类型”;报头值:响应为415,java,http-headers,http-delete,feign,openfeign,Java,Http Headers,Http Delete,Feign,Openfeign,我想使用外文执行删除: public static <T> T createClient(Class<T> type) { return Feign.builder() .client(new OkHttpClient()) .encoder(new GsonEncoder()) .decoder(new CustomGsonDecoder()) .logger(new

我想使用外文执行删除:

public static <T> T createClient(Class<T> type) {
    return Feign.builder()
            .client(new OkHttpClient())
            .encoder(new GsonEncoder())
            .decoder(new CustomGsonDecoder())
            .logger(new Slf4jLogger(type))
            .logLevel(Logger.Level.FULL)
            .target(type, url);
}
当我这样做的时候:

CLIENT = createClient(ConsumersClient.class);
CLIENT.deleteConsumerById(token, id)
我得到了

{"statusCode":415,"error":"{\"timestamp\":\"2020-02-27T08:09:33.634Z\",\"status\":415,\"error\":\"Unsupported Media Type\",\"message\":\"Content type '' not supported\",\"path\":\"/consumers/id\"}"}
由于消息为:“内容类型“”不受支持”,因此我假定Feign不会将内容类型值应用于其标头

请注意:通过邮递员发出的相同请求返回200个参数相同的数据。因此,该服务按预期工作

Logback显示标题包括:

11:09:32.660 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] ---> DELETE https://hereGoesMyURL/consumers/id HTTP/1.1
11:09:32.663 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] Content-Type: application/json
11:09:32.663 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] Authorization: Bearer hereGoesTheToken
11:09:32.664 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] ---> END HTTP (0-byte body)

请帮助找出我的代码有什么问题。

这里已经讨论了这个问题:


由于没有定义使用body-Feign的DELETE的语义,因此正在剥离此类型请求的内容类型头。

如何使用此假客户端?@Arthurofos I build client with Feign.builder()从上面的代码中使用带有delete方法的接口创建请求你能很好地格式化你的代码吗?@Arthurofos在注释中格式化很难…
Feign.builder().client(新的OkHttpClient()).encoder(新的GsonEncoder()).decoder(新的CustomGsonDecoder()).logger(新的Slf4jLogger(类型)).logLevel(完整的)。target(类型,url);
@Arthurofos似乎除了内联风格之外,没有其他方式在注释中发布代码
11:09:32.660 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] ---> DELETE https://hereGoesMyURL/consumers/id HTTP/1.1
11:09:32.663 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] Content-Type: application/json
11:09:32.663 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] Authorization: Bearer hereGoesTheToken
11:09:32.664 [main] DEBUG ConsumersClient - [ConsumersClient#deleteConsumerById] ---> END HTTP (0-byte body)