gpt4 book ai didi

java - 如何将 RestTemplate 与 application/octet-stream 响应类型一起使用

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:11 37 4
gpt4 key购买 nike

我正在使用 ISBNdB获取有关书籍的信息。响应类型为 application/octet-stream。我得到的示例 json 响应如下所示

{
"index_searched" : "isbn",
"data" : [
{
"publisher_id" : "john_wiley_sons_inc",
"publisher_name" : "John Wiley & Sons, Inc",
"title_latin" : "Java programming interviews exposed",
"language" : "eng",
"summary" : "",
"physical_description_text" : "1 online resource (xvi, 368 pages) :",
"author_data" : [
{
"name" : "Markham, Noel",
"id" : "markham_noel"
},
{
"id" : "greg_milette",
"name" : "Greg Milette"
}
],
"title_long" : "Java programming interviews exposed",
"urls_text" : "",
"publisher_text" : "New York; John Wiley & Sons, Inc",
"book_id" : "java_programming_interviews_exposed",
"awards_text" : "; ",
"subject_ids" : [],
"isbn13" : "9781118722862",
"lcc_number" : "",
"title" : "Java programming interviews exposed",
"isbn10" : "1118722868",
"dewey_decimal" : "005.13/3",
"edition_info" : "; ",
"notes" : "\"Wrox programmer to programmer\"--Cover.; Acceso restringido a usuarios UCM = For UCM patrons only.",
"marc_enc_level" : "",
"dewey_normal" : "5.133"
}
]
}

我正在使用 Jackson 转换此响应。我的 Pojo 如下所示

@JsonIgnoreProperties(ignoreUnknown = true)

public class value {
private String index_searched;
// Another pojo in different file with ignore properties
private data[] dat;

public value(){

}
public data[] getDat() {
return dat;
}

public void setDat(data[] dat) {
this.dat = dat;
}
public String getIndex_searched() {
return index_searched;
}
public void setIndex_searched(String index_searched) {
this.index_searched = index_searched;
}
}

当我尝试跟随

  value book = restTemplate.getForObject(FINAL_URL, value.class);

我得到这个异常

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.rocketrenga.mylibrary.domain.value] and content type [application/octet-stream]

但我能够将响应映射到字符串

String book = restTemplate.getForObject(FINAL_URL, String.class);
ObjectMapper mapper = new ObjectMapper();
value val = mapper.readValue(book, value.class);
System.out.println(val.getIndex_searched());

如何将响应直接映射为 POJO 而不是 String 并转换回 POJO

最佳答案

您需要使用消息转换器配置 restTemplate。在您的配置中执行以下操作:

   @Bean
public RestOperations restTemplate() {
RestTemplate restTemplate = new RestTemplate();

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();


converter.setSupportedMediaTypes(
Arrays.asList(new MediaType[]{MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM}));

restTemplate.setMessageConverters(Arrays.asList(converter, new FormHttpMessageConverter()));
return restTemplate;
}

关于java - 如何将 RestTemplate 与 application/octet-stream 响应类型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955167/

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