resttemplate请求文件服务器,通过RestTemplate发送multipart文件

我有一些关于使用Android通过Spring restTemplate发送图像文件(multipart)的问题。

这是我服务器上的控制器:

@RequestMapping(value = "/uploadPhoto/{id}", method = RequestMethod.POST)

@ResponseBody

public ResponseEntity uploadPhoto(@RequestParam("file") MultipartFile srcFile,

@PathVariable("id") Integer id) {

/// do something

return RestUtil.getJsonSHttptatus(HttpStatus.NOT_ACCEPTABLE);

}

这是我的android活动中的休息请求

private void doUpload(){

new AsyncTask() {

@Override

protected String doInBackground(String... params) {

FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();

formHttpMessageConverter.setCharset(Charset.forName("UTF8"));

RestTemplate restTemplate = new RestTemplate();

restTemplate.getMessageConverters().add( formHttpMessageConverter );

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

restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());

String uri = "http://localhost:8089/web/uploadPhoto/1";

String imagePath = "/mnt/sdcard/DCIM/Camera/IMG_20140406_130350.jpg";

MultiValueMap map = new LinkedMultiValueMap();

map.add("expenseId", 1);

map.add("file", new FileSystemResource(path));

HttpHeaders imageHeaders = new HttpHeaders();

imageHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);

HttpEntity> imageEntity = new HttpEntity>(map, imageHeaders);

restTemplate.exchange(uri, HttpMethod.POST, imageEntity, Boolean.class);

return "";

}

@Override

protected void onPostExecute(String result) {

Toast.makeText(MainActivity.this, "Data : "+result,

Toast.LENGTH_LONG).show();

}

}.execute();

}

我收到此错误:

04-07 07:21:00.312: E/AndroidRuntime(1205): Caused by: org.springframework.http.converter.HttpMessageNotWritableException: Could not write request: no suitable HttpMessageConverter found for request type [java.lang.Integer]

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.http.converter.FormHttpMessageConverter.writePart(FormHttpMessageConverter.java:314)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.http.converter.FormHttpMessageConverter.writeParts(FormHttpMessageConverter.java:276)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.http.converter.FormHttpMessageConverter.writeMultipart(FormHttpMessageConverter.java:266)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:209)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:91)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:624)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:474)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)

04-07 07:21:00.312: E/AndroidRuntime(1205): at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)

04-07 07:21:00.312: E/AndroidRuntime(1205): at com.sample.rest.client.MainActivity$4.doInBackground(MainActivity.java:295)

04-07 07:21:00.312: E/AndroidRuntime(1205): at com.sample.rest.client.MainActivity$4.doInBackground(MainActivity.java:1)

我的代码有什么问题?

任何用于多部分请求的HttpMessageConverter?

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值