如何为restful Web服务格式化xml输入并调用该服务

时间:2012-12-05 11:17:56

标签: web-services spring rest

大家好我全部使用restFul Web服务公开服务   服务器端代码是

@RequestMapping(value =“/ getPerson”,method = RequestMethod.POST)          public ModelAndView getPerson(@RequestParam(“inputXml”)String inputXml){
          -------------------------            ----------------------------
            }             返回新的ModelAndView(“userXmlView”,BindingResult.MODEL_KEY_PREFIX                     + String.class,“Test”);         }

客户端实施是:

        URL oracle = new URL("http://localhost:8081/testWeb/restServices/getPerson?inputXml=input");
         System.out.println("Oracle URl is "+oracle);
         HttpURLConnection connection = (HttpURLConnection)oracle.openConnection();
         connection.setDoOutput(true);
        connection.setRequestProperty("Content-type", "application/xml; charset:ISO-8859-1");
        connection.setRequestMethod("POST");
        BufferedReader in = new BufferedReader(new InputStreamReader(
                connection.getInputStream()));
        String inputLine;
       while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);  
     in.close(); 

我可以使用URL访问该服务       http://localhost:8081/testWeb/restServices/getPerson?inputXml="input" 实际上我的要求是,我需要传递xml字符串作为这样的输入

http://localhost:8081/testWeb/restServices/getPerson?inputXml="<?xml%20version="1.0"%20encoding="UTF-8"%20standalone="yes"?><product><code>WI1</code><name>Widget%20Number%20One</name><price>300.0</price></product>"

请帮我找到解决方案

2 个答案:

答案 0 :(得分:0)

Maya,/getPerson不是RESTful URI名称。您应该使用类似/person的内容。这样,您可以使用HTTP GETDELETE它。

答案 1 :(得分:0)

看看RestAssured

given().
       formParam("formParamName", "value1").
       queryParam("queryParamName", "value2").
when().
       post("/something");

或春天RestTemplate

Map<String, String> vars = new HashMap<String, String>();
vars.put("count", "5");
restTemplate.getForObject(person, Person.class, vars);