Как правильно отправить POSTFIELDS на cURL - PullRequest
1 голос
/ 28 мая 2019

Мне нужно отправить данные POST через cURL, как показано на рисунке.

изображение с данными POST

У меня есть этот код

 $data = [
            'action' => 'order_cost',
            'address' => 'http://91.211.117.3:720'
        ];

  $query = http_build_query($data);

   $url = "https://ap4.taxi/api/TaxiAPI.php";
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36');
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryvJFySHvqeKppEN9W',
            )
        );
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
        $output = curl_exec($ch);

        curl_close($ch);

        var_dump($output);

но я получаю ошибку

изображение с ошибкой

Я уже перепробовал много вариантов. Почтальон отправляет POST нормально, и я получаю ответ.

Пожалуйста, скажите мне, что я даже не представляю, как это можно сделать.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019
function execute_curl($url, $curlopt = array()){
    $ch = curl_init();
    $strCookie = session_name().'='.session_id().'; path=/';
    session_write_close();
    $default_curlopt = array(
        CURLOPT_URL => $url,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_COOKIE => $strCookie,
        CURLOPT_FOLLOWLOCATION => 1,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 AlexaToolbar/alxf-1.54 Firefox/3.6.13 GTB7.1"
    );
    $curlopt = $curlopt + $default_curlopt;

    curl_setopt_array($ch, $curlopt);
    $response = curl_exec($ch);
    $errormsg = curl_error($ch);
        $errorCode = curl_errno($ch);
    $results = array();
    if($errormsg)
    {
        $results['status'] = 'error';
        $results['data'] = $errormsg;
        $results['errorcodetxt'] = curl_error_codes($errorCode);
    }
    else
    {
        $results['status'] = 'success';
        $results['data'] = $response;
    }
    curl_close($ch);
    return $results;
}

$curlopt = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => 1);
$curlresponse = execute_curl($url, $curlopt);   
0 голосов
/ 28 мая 2019

Как видно из вашего кода, вы отправляете только два поля методом POST (action и address) Пожалуйста, покажите нам код https://ap4.taxi/api/TaxiAPI.php, где вы обрабатываете полученные данные.

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