Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP到Java的REST Post_Java_Php_Spring_Rest - Fatal编程技术网

从PHP到Java的REST Post

从PHP到Java的REST Post,java,php,spring,rest,Java,Php,Spring,Rest,我有一个RESTSpringJava服务,它可以完美地与Java客户机配合使用,但无法与PHP客户机配合使用。我是PHP新手,不知道我做错了什么 控制器: @RequestMapping(method = RequestMethod.POST, value = "/add_something") @ResponseBody public SomeDTO save_something(@Valid @RequestBody SomeDTO someDTO) { return someSe

我有一个RESTSpringJava服务,它可以完美地与Java客户机配合使用,但无法与PHP客户机配合使用。我是PHP新手,不知道我做错了什么

控制器:

@RequestMapping(method = RequestMethod.POST, value = "/add_something")
@ResponseBody
public SomeDTO save_something(@Valid @RequestBody SomeDTO someDTO) {

    return someService.save(someDTO);
}
有些人:

@XmlRootElement(name = "someDTO")
public class SomeDTO {

    private String  name;
    private CustomSome customSome;

    ...
}

@XmlRootElement(name = "customDTO")
public class CustomDTO {

    private String name;
    ...
}
和PHP客户端调用:

$data = json_encode(array('someDTO'  => array(
               'name' => set_value('name'),
               'customSome' => array('name' => set_value('custom_name'))
                                             )
                         )
                   );

        $ch = curl_init($url);
        curl_setopt_array($ch, array(
                CURLOPT_POST => TRUE,
                CURLOPT_RETURNTRANSFER => TRUE,
                CURLOPT_HTTPHEADER => array(
                        'Content-Type: application/json',
                        'Content-Length: ' . strlen($data)
                ),
                CURLOPT_POSTFIELDS => $data
        ));

        // Send the request
        $response = curl_exec($ch);

它没有达到控制器方法。实现了类似的无请求主体的控制器方法。但是一旦需要发送json,就不会发生任何事情。

当您尝试PHP代码时,您会得到HTTP状态代码416或415吗?我得到错误的语法400。@user1335163试试这个:$ch=curl_init($url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);卷曲设置($ch,卷曲设置桩,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$data)$响应=curl_exec($ch);