MediaType.APPLICATION_JSON与MediaType.TEXT_PLAIN区别
时间: 2023-03-29 18:00:17 浏览: 350
MediaType.APPLICATION_JSON和MediaType.TEXT_PLAIN的区别在于它们表示的数据类型不同。MediaType.APPLICATION_JSON表示数据是JSON格式的,而MediaType.TEXT_PLAIN表示数据是纯文本格式的。在使用RESTful API时,我们可以根据需要选择使用哪种数据类型来传输数据。
相关问题
public void queryShopList() throws Exception { String session3rd = getSession3rd(); Map<String, String> head = new HashMap<>(); head.put("session3rd", session3rd); head.put("v", "100"); HttpHeaders httpHeaders = TestHeadUtil.getHttpHeaders(); httpHeaders.set("openId", "ossjE5VyWgsU-QcNKO_3OfpBNG3c"); httpHeaders.set("appType", "nft"); httpHeaders.set("v", "100"); httpHeaders.set("session3rd", session3rd); Map<String, String> bean = new HashMap<>(); bean.put("session3rd", session3rd); bean.put("couponId", "207504"); bean.put("lat", "23.12463"); bean.put("lng", "113.36199"); bean.put("limit", "10"); bean.put("page", "1"); // bean.put("data", "45FD95D0B7A233898C8ECA775042ECCC0860525875BB738A030389B0C3E9B7CBEB3A4B6636CC9732057434FFC32D11186E2C4176B84B06904D122E0400692CFBB24115ACB1F6DB7755CF5AAC1F7F1B95C9D8A398867DFFC45B6DC6274E154D8E7FDD34A9E11558D9AE161ECC8DF808377429A850FB48344FFC7000E3ED1257F2D3B565E5ED39AA67CFDE867C02DE9614341A3E55F52391D5B50834BD00B05C16"); // String content = RequestUtil.getEncodeParam(session, bean); String content = JSONObject.toJSONString(bean); ResultActions resultActions = mvc.perform(MockMvcRequestBuilders.post("/api/yiqilaiCoupon/coupon/queryShopList") .content(content).contentType(MediaType.APPLICATION_JSON) //.contentType(MediaType.TEXT_PLAIN) .headers(httpHeaders)) .andExpect(status().isOk()); resultActions.andReturn().getResponse().setCharacterEncoding("UTF-8"); String json = resultActions.andDo(print()).andReturn().getResponse().getContentAsString(); assert JSONObject.parseObject(json).getIntValue("result") == 0; }
这是一个 Java 代码段,它似乎是使用 Spring MVC 框架编写的。代码中定义了一个名为 queryShopList 的方法,该方法抛出 Exception 异常。该方法中创建了一个名为 session3rd 的字符串变量,以及两个名为 head 和 bean 的 Map 对象。在 head 中存储了一些键值对,如 session3rd、v、openId、appType 等。在 bean 中存储了一些键值对,如 session3rd、couponId、lat、lng、limit、page 等。代码中使用了 MockMvcRequestBuilders 类中的 post() 方法,对 "/api/yiqilaiCoupon/coupon/queryShopList" 接口进行了 POST 请求,并传递了一个 JSON 格式的参数。最后,使用 assert 断言判断返回的 JSON 中的 result 值是否为 0。
如何把text/plain;charset=UTF-8转换application/json
您可以通过自定义一个消息转换器来实现将"text/plain;charset=UTF-8"转换为"application/json"。在RestTemplate配置类中,您可以添加一个自定义的消息转换器,让RestTemplate支持这种转换。具体的代码如下所示:
```java
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MyMappingJackson2HttpMessageConverter());
return restTemplate;
}
public static class MyMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
public MyMappingJackson2HttpMessageConverter() {
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.TEXT_PLAIN);
setSupportedMediaTypes(mediaTypes);
}
}
}
```
通过添加这个自定义的消息转换器,RestTemplate就能够将"text/plain;charset=UTF-8"的数据转换为"application/json"的数据了。
#### 引用[.reference_title]
- *1* *2* *3* [RestTemplate远程调用,响应结果中的响应头为content-type:text/plain;charset=utf-8,且数据类型转换失败](https://blog.csdn.net/Staba/article/details/124442200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文