OpenFeign客户端未应用“ Content-Type”标头值:415作为响应

问题描述 投票:0回答:1

我想使用伪装执行DELETE:

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);
}

ConsumersClient界面中的方法:

@RequestLine("DELETE /consumers/{id}")
@Headers({"Content-Type: application/json", "Authorization: Bearer {token}"})
Response deleteConsumerById(@Param("token") String token, @Param("id") String id);

当我这样做时:

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不会将Content-Type值应用于其标题。

请注意:通过邮递员的相同请求将返回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)

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

java http-headers http-delete feign openfeign
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.