cURL适用于我的REST API但不是Guzzle

mar*_*nes 7 php rest curl guzzle laravel-4

我正在尝试使用Guzzle将我的Laravel框架连接到我的服务器.每个GET请求没有参数,但我遇到POST问题.

这个使用cURL的请求工作正常:

curl -i -X POST -H 'Content-Type: application/json' -d '{"email":"user@domain.com", "pwd":"xxxxxx"}' http://www.example.com:1234/rest/user/validate
Run Code Online (Sandbox Code Playgroud)

这就是我试图用Guzzle实现的:

$response = GuzzleHttp\post('http://www.example.com:1234/rest/user/validat', [
            'headers' => ['Content-Type' => 'application/json'],
            'body'    => ['{"email":"user@domain.com", "pwd":"xxxxxx"}']
]);     
print_r($response->json());
Run Code Online (Sandbox Code Playgroud)

当我提出请求时,我收到下一个错误:

[status code] 415 [reason phrase] Unsupported Media Type
Run Code Online (Sandbox Code Playgroud)

我认为是相关的,body但我不知道如何解决它.

任何的想法?

low*_*nds 12

没有必要在body值周围使用方括号.另外,请确保Accept定义了标头.您应该使用此代替:

$response = GuzzleHttp\post('http://www.example.com:1234/rest/user/validat', [
        'headers' => ['Content-Type' => 'application/json', 'Accept' => 'application/json'],
        'body'    => '{"email":"user@domain.com", "pwd":"xxxxxx"}'
]);     
print_r($response->json());
Run Code Online (Sandbox Code Playgroud)

  • 虽然json格式不起作用(我使用了一个数组作为正文),但经过多次尝试后,这对我有用,谢谢. (2认同)