第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創(chuàng)建多部分表單/數(shù)據(jù)客戶端的 Spring Rest 模板像郵遞員一樣工作,拋出不可轉(zhuǎn)換的異常

創(chuàng)建多部分表單/數(shù)據(jù)客戶端的 Spring Rest 模板像郵遞員一樣工作,拋出不可轉(zhuǎn)換的異常

拉丁的傳說 2021-11-11 15:57:56
我想將這個帶有 multipart/form-data 標頭請求的郵遞員客戶端轉(zhuǎn)換為 spring 模板客戶端?,F(xiàn)在,我有一個基本的休息控制器,效果很好。@RestController@RequestMapping("/api")public class MainConroller {    private static final Logger log = LoggerFactory.getLogger(MainConroller.class);    @Autowired    private MainService mainService;    public MainConroller(MainService mainService) {        this.mainService = mainService;    }    @PostMapping("/mails/send")    public void send(            @RequestParam("usertoken") String usertoken,            @RequestParam("sendTo") String sendTo,            @RequestParam("subject") String subject,            @RequestParam("content") String content,            @RequestParam(required = false, name = "files") List<MultipartFile> multipartFiles) {        log.debug("{}, {}, {}, {}", usertoken, sendTo, subject, content);        mainService.processMessage(usertoken, sendTo, subject, content, multipartFiles);    }}但是,我需要創(chuàng)建一個休息客戶端,所以我使用了一個休息模板,它現(xiàn)在看起來像這樣:ArrayList<HttpMessageConverter<?>> converters = new ArrayList<>(            Arrays.asList(new MappingJackson2HttpMessageConverter(), new ResourceHttpMessageConverter(), new FormHttpMessageConverter()));    @Bean    public RestTemplate restTemplate() {        return new RestTemplate(converters);    }問題是當(dāng)我嘗試發(fā)送發(fā)布請求時,它拋出Exception in thread "main" org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [org.springframework.util.LinkedMultiValueMap] and content type [multipart/form-data]
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

你把事情搞得太復(fù)雜了。您應(yīng)該使用單個地圖來保存表單值,而不是地圖的地圖。在 Spring Boot 旁邊已經(jīng)提供了一個,RestTemplate所以你不需要再次配置你自己的。


File file = new File("*********");


HttpHeaders httpHeaders = new HttpHeaders();

httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);


MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();

form.add("files", file);

form.add("files", file);

form.add("files", file);


form.add("usertoken", "test");

form.add("sendTo", "test");

form.add("subject", "test");

form.add("content", "test");


HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(form, httpHeaders);


String serverUrl = "****";


restTemplate().postForEntity(serverUrl, requestEntity, String.class);

在RestTemplate(或?qū)嶋H上的FormHttpMessageConverter),將其轉(zhuǎn)化為一個正確的請求。


查看完整回答
反對 回復(fù) 2021-11-11
?
慕標琳琳

TA貢獻1830條經(jīng)驗 獲得超9個贊

默認的 RestTemplate 構(gòu)造函數(shù)不包含任何消息轉(zhuǎn)換器,您需要添加它。例如,您可以這樣做:


HttpEntity<MultiValueMap<String, Object>> requestEntity = new 

HttpEntity<MultiValueMap<String, Object>>(parts, requestHeaders);


RestTemplate restTemplate = getRestTemplate();

restTemplate.getMessageConverters().add(new FormHttpMessageConverter());

restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


return restTemplate.postForObject(apiURI, requestEntity, String.class);


查看完整回答
反對 回復(fù) 2021-11-11
  • 2 回答
  • 0 關(guān)注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號