【问题标题】:cURL works for my REST API but Guzzle notcURL 适用于我的 REST API,但 Guzzle 不适用
【发布时间】:2020-09-23 20:57:06
【问题描述】:

我正在尝试使用 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

这就是我尝试用 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());

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

[status code] 415 [reason phrase] Unsupported Media Type

我认为是与body 相关的问题,但我不知道如何解决。

有什么想法吗?

【问题讨论】:

  • 尝试省略body 值的方括号。

标签: php rest curl laravel-4 guzzle


【解决方案1】:

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

【讨论】:

  • 虽然 json 格式不起作用(我使用数组作为正文),但经过多次尝试,这使它对我有用,谢谢。
  • 有什么方法可以接受 header 中的附加参数?
【解决方案2】:

这样就可以了

'Accept' => '*/*'

祝你好运

【讨论】:

    【解决方案3】:

    Guzzle 6 删除了 json() 方法,因为符合 PSR-7(参考 https://github.com/guzzle/guzzle/issues/1106)。因此,如果您使用的是早期版本,lowends 的答案可能会起作用;对于版本 6 的用户,请改用它:

    $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(json_decode($response->getBody(), true));
    

    【讨论】:

    • 我正在使用 guzzlehttp/guzzle 6.3 版。以字符串格式获取响应。尝试了所有可能的方式(json_decode),但仍然是字符串格式。请帮忙
    【解决方案4】:

    删除 'Content-Type: application/json' 之间的空格并将其修改为 'Content-Type:application/json' 对我有用

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 2013-05-29
      • 1970-01-01
      • 2018-03-17
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 2017-08-06
      相关资源
      最近更新 更多