简体   繁体   English

带有多部分请求的android rest模板

[英]android rest template with multi-part request

case 1 : send Entity class as request [working] 情况1:发送Entity类作为请求[工作]

case 2 : send image(multipart) as request [working] 情况2:按要求发送图片(多部分)[工作]

case 3 : send entity + image [not working] 情况3:发送实体+图片[无效]

case 1 : 情况1 :

@RequestMapping(value = "/add", method = RequestMethod.POST)
public @ResponseBody String add(@RequestBody SampleEntity sampleEntity) {
    return "From Server: " + sampleEntity.getId();
}

test case 1 测试案例1

sampleEntity.setId(123);
String response1 = restTemplate.postForObject(SERVER_URI+"add", sampleEntity, String.class);
System.out.println(response1);

Output : From Server: 123 输出:来自服务器:123

case 2 : 情况2:

@RequestMapping(value = "/imagepart", method = RequestMethod.POST)
public @ResponseBody String imagePart(@RequestPart("image") MultipartFile file) {
    return "From Server(ImagePart): " + file.getOriginalFilename();
}

test case 2 测试案例2

MultiValueMap<String, Object> part1 = new LinkedMultiValueMap<String, Object>();
    part1.add("image", new FileSystemResource("C:\\Users\\Public\\Pictures\\Sample Pictures\\Koala.jpg"));
    String response2 = restTemplate.postForObject(SERVER_URI+"imagepart", part3,  String.class);
    System.out.println(response2);

Output : From Server(ImagePart): Koala.jpg 输出:来自服务器(ImagePart):Koala.jpg

case 3 : 情况3:

@RequestMapping(value = "/addimagepart", method = RequestMethod.POST)
public @ResponseBody String addPart(
        @RequestPart("sampleEntity") SampleEntity sampleEntity,
        @RequestPart("image") MultipartFile file) {

    return "From Server(Part) : " + sampleEntity.getId() + " "
            + file.getOriginalFilename();

}

test case 3 测试案例3

  sampleEntity.setId(2);
  part.add("sampleEntity",sampleEntity);
  part.add("image", new FileSystemResource("C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg"));
  String response2 = restTemplate.postForObject(SERVER_URI+"addimagepart", part, String.class);
    System.out.println(response2);

Error : this case failed (entity class with image not working) 错误:此案例失败(带有图片的实体类不起作用)

how to make request Entity + Multipart Request from android rest template to spring mvc server 如何从android rest模板向spring mvc服务器发出请求实体+分段请求

In case 3 the FormHttpMessageConverter is used to convert MultiValueMap objects for sending in HTTP requests. 在情况3中, FormHttpMessageConverter用于转换MultiValueMap对象以在HTTP请求中发送。 Unfortunately, default FormHttpMessageConverter does not support conversion of entities to JSON. 不幸的是,默认的FormHttpMessageConverter不支持将实体转换为JSON。 Thus, You have to add some JSON converter (eg MappingJackson2HttpMessageConverter ) to FormHttpMessageConverter manually. 因此,您必须手动将一些JSON转换器(例如MappingJackson2HttpMessageConverter )添加到FormHttpMessageConverter Try to use this code: 尝试使用以下代码:

FormHttpMessageConverter converter = new FormHttpMessageConverter();
converter.addPartConverter(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(0, converter);

Instead of Multipartfile annotation, fetch multipart-data from request object 代替Multipartfile批注,从请求对象获取multipart-data

if (request instanceof MultipartHttpServletRequest) {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

            Set set = multipartRequest.getFileMap().entrySet();
            Iterator i = set.iterator();
            while (i.hasNext()) {
                Map.Entry me = (Map.Entry) i.next();
                System.out.println("key :" + me.getKey() + "-"
                        + me.getKey().getClass() + "|||||" + "value :"
                        + me.getValue() + "-" + me.getValue().getClass());
                switch ((String) me.getKey()) {
                case "staffPhoto": {
                    System.out.println("case staffImage "
                            + ((MultipartFile) me.getValue())
                                    .getOriginalFilename());
                    // processImage
                    break;
                }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 后台多部分请求 - Multi-Part request in background Android AsyncTask和多部分HTTP请求 - Android AsyncTask and Multi-Part HTTP Requests Android对Web API的多部分请求未获取与请求关联的文本 - Android multi-part request to web api not getting text associated with request Android代码使用多部分表单数据将图像和JSON请求上载到服务器 - Android code to upload image and json request to a server using multi-part form data 带有波斯字符的Android Volley多部分表单数据请求在服务器端收到问号 - Android volley Multi-part form-data request with Persian characters receive question mark on server side Android-发送许多多部分消息会错过其中的一些消息 - Android - Sending Many multi-part Messages will miss some of them 如何在 Android 的 Volley 中使用多部分上传多张图片 - How to upload multiple images using multi-part in Volley in Android 如何在Android中使用字符串参数发布多部分/表单图像 - How to post multi-part/form images with string parameter in android 通过Android将多部分图片上传到Asmx Web服务 - Upload multi-part image to asmx web service via android 如何将非英语单词作为文本部分添加到 volley lib 中的多部分请求? - How to add non-English words as text part to multi-part request in volley lib?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM