在Spring Controller

时间:2016-06-13 07:59:59

标签: spring rest controller hashmap

实际上我正在尝试为我的办公室食堂制作一个Android应用程序,因为Spring Web应用程序已经存在。在Android应用中,我显示了该特定日期的所有可用项目。员工将填写相应项目的数量,然后提交。为此我在Spring控制器中创建了一个webService,我可以通过REST访问android app中的所有项目(使用getForObject)。我已经将EditText的id作为item_id(使用rest从远程数据库中获取),每当用户点击下订单时,我创建一个HashMap,我将item_id,订购所有项目的qty。但我面临的问题是使用rest将HashMap发送到Spring Web应用程序。我尝试发送使用restTemplate.getForObject("http://172.16.1.2/webapp/rest/restPlaceOrder?order="+order, List.class);。但是它以...... / restPlaceOrder的形式接收?order = {1 = 2,2 = 7,8 = 4}。正如你所说,我应该使用postForObject而不是getForObject。现在我尝试使用postForObject并在spring控制器中使用@RequestBody。但是现在每当我在spring控制器中使用@RequestBody时,android restclient就会出现不支持的媒体类型的错误。所以请帮我用postForObject发送HashMap并在spring控制器中捕获相同的东西。我在Android客户端使用代码

 HashMap<Integer, Integer> order=new HashMap<Integer, Integer>(); 
order.put(1, 5); order.put(2, 4);
String url="http://172.16.1.2/webapp/rest/restPlaceOrder"
RestTemplate restTemplate1=new RestTemplate();
restTemplate1.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
List<LinkedHashMap> res=restTemplate1.postForObject(url, null, List.class, order);

在Spring Controller中的Web应用程序中,我正在使用

@RequestMapping(value="/restPlaceOrder", method= {RequestMethod.GET, RequestMethod.POST}, headers="Accept=application/json")
    public @ResponseBody List<Schedule> placeOrder(@RequestBody HashMap<Integer, Integer> order, HttpServletRequest request, HttpServletResponse response, Model m){
         System.out.println("welcome taking request");
         /*problem is whenever i put @RequestBody, Restclient shows unsupported media type and if I remove @RequestBody, then it works but then how to get that HashMap here */  
        List<Schedule> sc=new ArrayList();
        return sc;

          } 

1 个答案:

答案 0 :(得分:0)

使用@RequestParam

$imagick =  new Imagick($_FILES['file']['tmp_name']);

foreach ($imageFolders as $imageFolder => $size) {

    if ($imagick->getImageWidth() > $size['minWidth']) {
        $width = $size['maxWidth'];
        $height = $size['maxWidth'];
    } else {
        $width = $imagick->getImageWidth();
        $height = $imagick->getImageHeight(
    }

    $imagick = $imagick->coalesceImages();

    foreach($imagick as $frame){
        $frame->thumbnailImage($width , $height ); 
        $frame->setImagePage($width , $height , 0, 0); 
    }

    $imagick = $imagick->deconstructImages();
    $imagick->writeImages($imagePath, true);

}

$imagick->clear();
$imagick->destroy();