guzzle ver 6 post方法不是woking

时间:2015-06-16 06:28:03

标签: php guzzle

正在使用postman(带有application / json类型的原始格式数据) 用guzzle6

url-http://vm.xxxxx.com/v1/hirejob/
{
        "company_name":" company_name",
        "last_date_apply":"06/12/2015",
        "rid":"89498"
}

所以我得到了响应201创建了 但在guzzle

    $client = new Client();
    $data = array();
    $data['company_name'] = "company_name";
    $data['last_date_apply'] = "06/12/2015";
    $data['rid'] = "89498";
    $url='http://vm.xxxxx.com/v1/hirejob/';
    $data=json_encode($data);
    try {
            $request = $client->post($url,array(
                    'content-type' => 'application/json'
            ),array());

        } catch (ServerException $e) {
          //getting GuzzleHttp\Exception\ServerException Server error: 500
        }

我在vendor/guzzlehttp/guzzle/src/Middleware.php

上收到错误消息

第69行

 ? new ServerException("Server error: $code", $request, $response)

2 个答案:

答案 0 :(得分:6)

您实际上并未设置请求正文,但可以说最简单的传输JSON数据的方法是使用专用请求选项:

[[ ]]

答案 1 :(得分:0)

您需要使用json_encode()JSON_FORCE_OBJECT标志作为第二个参数。像这样:

$data = json_encode($data, JSON_FORCE_OBJECT);

如果没有JSON_FORCE_OBJECT标志,它将创建一个带括号表示法的json数组,而不是括号表示法。

另外,请尝试发送如下请求:

$request = $client->post($url, [
    'headers' => [ 'Content-Type' => 'application/json' ],
    'body' => $data
]);