работает в почтальоне (данные необработанного формата с использованием типа application / json) с guzzle6
url-http://vm.xxxxx.com/v1/hirejob/ { "company_name":" company_name", "last_date_apply":"06/12/2015", "rid":"89498" }
поэтому я получаю ответ 201
но в жопе
$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)
Фактически вы не устанавливаете тело запроса, но, возможно, самым простым способом передачи данных JSON является использование выделенного запроса:
$request = $client->post($url, [ 'json' => [ 'company_name' => 'company_name', 'last_date_apply' => '06/12/2015', 'rid' => '89498', ], ]);
Вы должны использовать флаг 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 ]);