gpt4 book ai didi

java - OpenFeign客户端不应用 "Content-Type" header 值: 415 in response

转载 作者:行者123 更新时间:2023-12-01 18:13:03 27 4
gpt4 key购买 nike

我想使用 feign 执行 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 接口(interface)的方法:

@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 值应用于其 header 。

请注意:通过 Postman 发出的相同请求将返回 200,且参数相同。因此该服务正在按预期工作。

Logback 表示包含 header :

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)

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

最佳答案

这个问题已经在这里讨论过: https://github.com/OpenFeign/feign/issues/391

由于没有定义带主体的 DELETE 语义,Feign 正在剥离此类请求的内容类型 header 。

关于java - OpenFeign客户端不应用 "Content-Type" header 值: 415 in response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60429026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com