2015-06-16 1 views
3

работает в почтальона (необработанные данные в формате с с применением/типа JSON) с guzzle6жрать версии 6 Метод пост не WOKING

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) 
+0

Возможный дубликат [Как я могу использовать Guzzle для отправки запроса POST в JSON?] (Http://stackoverflow.com/questions/22244738/how-can-i-use-guzzle-to-send-a- post-request-in-json) –

ответ

6

Вы на самом деле не устанавливая тело запроса, но, возможно, самый простой способ передачи данных JSON является использование выделенного параметра запроса:

$request = $client->post($url, [ 
    'json' => [ 
     'company_name' => 'company_name', 
     'last_date_apply' => '06/12/2015', 
     'rid' => '89498', 
    ], 
]); 
+0

hi jack я уже пробовал этот метод – RahulG

+0

@RahulG В этом вопросе нет упоминания об этом. –

+0

Я использую guzzle6 – RahulG

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 
]); 
+0

$ data = json_encode ($ data, JSON_FORCE_OBJECT); не работает – RahulG

+0

Попробуйте это в сочетании с ответом выше. –

+0

Вам нужно будет установить отправляемые данные, и его нужно правильно отформатировать как объект JSON. –