java - 如何使用 Spring 的 RestTemplate 来 POST 一个字符串数组

标签 java arrays spring post resttemplate

我正在尝试使用 spring 的 restTemplate 发布一个简单的字符串数组。有人成功了吗?

客户端:

    public void save(){
        String company = "12345";
        String productId = "10";
        String[] colors = {"A","B","C","D","E"};
        String convertUrl = "http://localhost:8080/cool-web/save";
        MultiValueMap<String, Object> convertVars = new LinkedMultiValueMap<String, Object>();
        convertVars.add("companyID", StringUtils.trimToEmpty(company));
        convertVars.add("productId", StringUtils.trimToEmpty(productId));
        convertVars.add("disclaimer", StringUtils.trimToEmpty("ffs"));
        convertVars.add("colorsArray", colors); 
        restTemplate.postForObject(convertUrl, null, String.class, convertVars);
}

服务是:

    @RequestMapping(value = "/save", method = RequestMethod.POST)
    @ResponseStatus(value = HttpStatus.OK)
    public void save(@RequestParam("colorsArray[]") String[] colors,
        @RequestParam("disclaimer") String disclaimer,
        @RequestParam("companyID") String companyID,
        @RequestParam("productId") String productId) {

    resourceService.save(colors, disclaimer, companyID, productId);
}

我收到 400 Bad Request。

我做错了什么?

我正在使用默认的 messageConverters。

我需要为一个简单的字符串数组实现自定义 messageConverter 吗?

最佳答案

解决方法如下:

public void save(){

    String company = "12345";
    String productId = "10";
    String[] colors = {"A","B","C","D","E"};
    String convertUrl = "http://localhost:8080/cool-web/save";

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

    convertVars.add("companyID", StringUtils.trimToEmpty(company));
    convertVars.add("productId", StringUtils.trimToEmpty(productId));
    convertVars.add("disclaimer", StringUtils.trimToEmpty("ffs"));

    for(String color:colors){
        convertVars.add("colorsArray[]", color); 
    }

    restTemplate.postForObject(convertUrl, convertVars , String.class); 
}

关于java - 如何使用 Spring 的 RestTemplate 来 POST 一个字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27643589/

相关文章:

java - 如何在java中复制数组而不是引用?

php - 将 json 数据输入智能建议插件

java - Spring JDBC - 将 BLOB 数组传递给 SQL 函数

java - 为什么字节数组本身的gc根在mat中?

java - Visualvm 中的自拍时间比其他时间长

javascript - 如何使用 ractive 设计数组中新 DOM 条目的样式?

java - 无法在 Spring REST Web 服务中成功使用验证

java - 在java中分割两个字母的字符串

java - 将长毫秒转换为 00 :00:00. 000 格式字符串

java - Spring 安全: Encrypt password