我为使用Spring Framework的REST服务创建了一个非常简单的控制器。我将@PathVariable与GETs结合使用时没有问题,但是当我尝试创建POST或PUT时,我无法调整函数并试图找出我出错的地方。从PHP卷起的问题 - Spring 3使用@RequestParameter参数的REST PUT/POST方法
@Controller
public class TestController {
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String putName(@RequestParam("name") String name, @RequestParam("value") String value) {
System.out.println("Name - " + name);
System.out.println("Value - " + value);
return "You entered " + name + " with value of " + value;
}
}
编辑这一点,包括一些PHP,因为那最终是我想调用它从这里。
如果我这样做,它按预期工作:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost:8080/RestService/test');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'name=some random name&value=just a value');
$result = curl_exec($ch);
但是,如果我试图传递的参数作为一个数组,我收到一个HTTP状态400通过客户端发送-The请求是语法不正确。
$data = array
(
'name' => 'some random name',
'value' => 'just a value'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost:8080/RestService/test');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result2 = curl_exec($ch);
如果我可以在所有帮助它,我不希望被建立字符串,担心逃避&符号,并等了我要传递的数据。
任何帮助,非常感谢。
你试试这个命令'卷曲--data “名称=测试” 的http://本地主机:8080/RestService/test'? – 2012-07-08 04:53:04