Spring OpenFeign Ogg 文件发送问题

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

我正在尝试通过java中的feign客户端将音频OGG文件字节发送到API端点,但是我收到了400错误请求→“error_message”:“OGG标头尚未找到”。 但是如果文件是从邮递员发送的(具有相同的标头和 OGG 文件),则一切正常。

假客户端:

@FeignClient(name = "${integration[0].speech.name}", url = "${integration[0].speech.url}", configuration = SpeechRecognizerConfig.class) public interface YandexSpeechRecognizerClient { @PostMapping @Headers({ "Content-Type", "audio/ogg" }) RecognizedTextResponse recognizeText(@RequestHeader("Authorization") String token, @RequestParam("lang") String lang, @RequestBody ByteArrayResource oggFileBytes);
Feign 客户端配置:

@Bean public Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } @Bean public Client httpFeignClient() { return new OkHttpClient(new okhttp3.OkHttpClient.Builder() .build()); } @Bean public Feign.Builder speechFeignBuilder(@Autowired Logger.Level logLevel, @Autowired Client client) { return Feign.builder() .logger(new Slf4jLogger(log)) .logLevel(logLevel) .client(client); }
测试方法:

byte[] bytes = Files.readAllBytes(oggFile.toPath()); RecognizedTextResponse yandexRecognizedTextResponse = underTest.recognizeText( "Bearer " + authClient.getToken().getAccessToken(), "en-EN", false, false, "123123123", new ByteArrayResource(bytes) );
已经尝试过 gagravarr vorbis、@Value 注入、MultipartFile。没有任何作用

java spring spring-boot rest spring-cloud-feign
1个回答
0
投票

@Header

 注释似乎没有按预期工作。您可以尝试以这种方式注入静态标头:

@PostMapping(headers = "content-type=audio/ogg") // or @PostMapping(produces = "audio/ogg")
    
© www.soinside.com 2019 - 2024. All rights reserved.