Получить ноль при публикации данных в API через PHP curl - PullRequest
0 голосов
/ 15 декабря 2018

Я работаю над проектом, в котором публикую некоторые данные в API через PHP Curl.Я получаю ответ как успешный, за исключением того, что в объекте данных я получаю нулевое значение после dd ().

Данные в браузере после dd

  {#367 ▼
      +"request_time": "2018-12-15 12:26:49"
      +"response_time": "2018-12-15 12:26:49"
      +"status": "success"
      +"message": "All Output"
      +"data": null
    }

Вызов функции скручивания в контроллере

 $data = array(
              "from_date"  => "2018-01-01",
              "to_date" => "2018-11-01"
          );

$general = GeneralHelper::global_Curl($data,'api/v1/b2b/general/ofa/agent-commission');

dd($general);

Функция скручивания

public static function global_Curl($data, $url)
    {
        $server = env('API_ENDPOINT_NGINX_IP') !== null ? env('API_ENDPOINT_NGINX_IP') : env('API_ENDPOINT_NGINX_IP');

        $accessToken = session('access_token');

        $headers = ['Accept:application/json',
                    'Authorization:Bearer '.$accessToken
                    ];

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, ($server.'/'.$url));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        //curl_setopt($ch, CURLOPT_HEADER, array('Accept:application/json', 'Authorization: Bearer '.$accessToken));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $response = json_decode(curl_exec($ch)); //dd(curl_exec($ch));
        curl_close($ch);

        return $response;
    }

1 Ответ

0 голосов
/ 15 декабря 2018

Вы должны отправить application/json закодированный запрос.

Это сделано так:

public static function global_Curl($data, $url)
{
    $server = env('API_ENDPOINT_NGINX_IP') !== null ? env('API_ENDPOINT_NGINX_IP') : env('API_ENDPOINT_NGINX_IP');

    $accessToken = session('access_token');

    $headers = [
      'Content-Type: application/json', 
      'Authorization: Bearer '.$accessToken
    ];
    $url = $server.'/'.$url;
    $data = json_encode($data); // since content type is application/json

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response);
}

пример здесь и здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...