javascript
java resttemplate_java-通过resttemplate通过Spring Rest服务发送文...
標(biāo)題可能看起來很普通,但是沒有一個適合我的問題.
我有一個REST服務(wù),它接受多部分形式的常規(guī)參數(shù)和文件.
我想使用resttemplate將數(shù)據(jù)和文件發(fā)送到上述rest服務(wù).
直到我發(fā)送正常的字符串?dāng)?shù)據(jù)為止,沒有任何問題.一旦我添加了發(fā)送字節(jié)的代碼,那么我開始收到400錯誤的請求錯誤.
如果我注釋了發(fā)送ByteArrayResource的代碼,那么它將開始為正常參數(shù)工作.
下面是示例代碼
休息服務(wù)控制器
@RestController
@RequestMapping(value="/ticket")
public class UserTicketController {
@RequestMapping(value="/createTicket.do",method={RequestMethod.POST},
consumes = {MediaType.MULTIPART_FORM_DATA_VALUE},headers={"content-type="+MediaType.MULTIPART_FORM_DATA_VALUE})
public void createTicket(@ModelAttribute ServiceDeskRequest serviceDeskRequest, HttpServletRequest request,HttpServletResponse response) throws Exception{
}
}
Servicedeskrequest模型屬性為
public class ServiceDeskRequest implements Serializable{
private String jsonData;
private MultipartFile attachment;
}
應(yīng)用程序的context.xml
客戶端代碼
RestTemplate restTemplate = new RestTemplate();
MultiValueMap requestParamerterMap = new LinkedMultiValueMap();
requestParamerterMap.add("jsonData", jsonData);
MultipartFile attachment = userRequest.getAttachment();
if(attachment!=null && attachment.getOriginalFilename()!=null) {
ByteArrayResource byteArrayResource = new ByteArrayResource(attachment.getBytes(), attachment.getOriginalFilename());
requestParamerterMap.add("attachment", byteArrayResource);
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity> requestEntity = new HttpEntity>(requestParamerterMap, headers);
String response = restTemplate.postForObject(targetUrl, requestEntity, String.class);
總結(jié)
以上是生活随笔為你收集整理的java resttemplate_java-通过resttemplate通过Spring Rest服务发送文...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: messagehub讲解_艾舜杰SAP
- 下一篇: java.policy无法修改_如何配置