java - PHP curl 问题 - 使用 @RequestParameter 参数的 Spring 3 REST PUT/POST 方法

标签 java php web-services spring rest

我使用 Spring 框架为 REST 服务创建了一个非常简单的 Controller 。我将 @PathVariable 与 GET 结合使用没有任何问题,但是当我尝试创建 POST 或 PUT 时,我无法 curl 该函数,并且试图找出哪里出了问题。

@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 - 客户端发送的请求在语法上不正确。

    $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);

如果我能帮助的话,我不想构建字符串,担心转义&符号等我想要传递的数据。

非常感谢任何帮助。

最佳答案

使用http_build_query

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

关于java - PHP curl 问题 - 使用 @RequestParameter 参数的 Spring 3 REST PUT/POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380663/

相关文章:

c# - WS-* 是什么意思?

java - Spring Data Gemfire 存储 java.lang.Class 字段

php - pdo mysql时间戳过滤器被忽略

php - 是否可以通过 php 设置 $_POST 变量以将数据传递给表单元素

java - 如何在我的 Java Web 服务客户端请求中使用 SSL/TLS 握手

java - 服务方法参数、对象标识符与对象引用

java - 范围报告 : Not able to see the screenshots on other machine

java - 使用括号中的 JSON 值查询 Apache Solr

java - 为什么递增 Java int 最终会导致负数?

php - 如何在PHP复制时发送登录信息