簡體   English   中英

如何使用RestTemplate調用MultipartFile Spring REST URL

[英]How to call MultipartFile Spring REST URL with RestTemplate

當我嘗試使用基於Spring模板的Test方法調用以下MultipartFile Spring REST URL時,出現以下異常。 我該如何糾正。 謝謝。

Spring REST URL:

 @RequestMapping(value = "/media/uploadMultipartFile/{token}/{title}/{trailId}/{wpId}", method = RequestMethod.POST)
 public @ResponseBody MediaHttp uploadMultipartFile(@RequestParam MultipartFile file,
                                                    @PathVariable String token,
                                                    @PathVariable String title,
                                                    @PathVariable String trailId,
                                                    @PathVariable String wpId,
                                                    HttpServletResponse response)

測試方法:

try {

        // Message Converters
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
        messageConverters.add(new FormHttpMessageConverter());
        messageConverters.add(new SourceHttpMessageConverter<Source>());
        messageConverters.add(new StringHttpMessageConverter());
        messageConverters.add(new MappingJacksonHttpMessageConverter());

        // RestTemplate
        RestTemplate template = new RestTemplate();
        template.setMessageConverters(messageConverters);

        // URL Parameters
        MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
        parts.add("token", "nkc2jvbrbc");
        parts.add("title", "test mp4 file");
        parts.add("trailId", "2");
        parts.add("wpId", "7");
        parts.add("file", new FileSystemResource("C:\\Users\\Public\\Pictures\\Sample Pictures\\test.mp4"));

        // Post
        MediaHttp result = template.postForObject(Constants.APPLICATION_URL + "/media/uploadMultipartFile/{token}/{title}/{trailId}/{wpId}", parts, MediaHttp.class);

    } catch (Exception e) {
        System.out.println("Error: " + e.getMessage());
    }

例外:

[ http://test.com:8080/DMW-skeleton-1.0/media/uploadMultipartFile/ {token} / {title} / {trailId} / {wpId}]中的變量值數量無效:預期為4; 得到了0

消息很清楚,您沒有指定任何要提交的路徑參數。 您僅提供將作為請求正文發送的地圖。

更改您的調用以將那些參數包括在方法調用的最后一部分。

// URL Parameters
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("file", new FileSystemResource("C:\\Users\\Public\\Pictures\\Sample Pictures\\test.mp4"));
// Post
MediaHttp result = template.postForObject(Constants.APPLICATION_URL + "/media/uploadMultipartFile/{token}/{title}/{trailId}/{wpId}", parts, MediaHttp.class, "nkc2jvbrbc", "test mp4 file", "2", "7);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM