Нет обратного вызова из API после запроса php cURL - PullRequest
0 голосов
/ 26 марта 2020

Мой код отправляет запрос curl API, который преобразует форматы изображений, например, png в jpg. Документация по API предлагает обратный вызов от API, который, когда преобразование будет завершено, отправит запрос GET на URL-адрес на моем сервере (размещен, а не localhost). Я предоставляю этот URL-адрес API с парой ключ / значение: "callback" => "12coins.net/cc_callback.php" К сожалению, API никогда не перезванивает. Мои параметры curl_setopt неверны или в чем может быть проблема?

    $ch_start_process = curl_init();

        $start_process_data = array(
           "callback" => "https://12coins.com/cc_callback.php", 
           "input" => "download", 
           "file" => "https://12coins.com/photo_file.png",//the image I want converted
           "tag" => "tag - unused for now", 
           "outputformat" => "jpg");

        $process_url = "https:".$url_from_create;//prepend https to construct a valid endpoint.
          //$url_from_create is a url returned by the API to a request immediately prior to this one 


        curl_setopt($ch_start_process, CURLOPT_URL, $process_url); 
        curl_setopt($ch_start_process, CURLOPT_POSTFIELDS, http_build_query ($start_process_data));
        curl_setopt($ch_start_process, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch_start_process, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

        $start_response=curl_exec($ch_start_process);//assign return value of curl_exec()

Это сценарий на моем (удаленном) сервере 12coins.net/cc_callback.php, к которому должен обращаться API, но не:

<?php
header('Access-Control-Allow-Origin: *');
echo 'cc_callback has been called';
echo 'The GET request from CloudConvert is: '. $_GET;
?>

1 Ответ

0 голосов
/ 27 марта 2020

API фактически перезванивает. Просто с кодом, показанным в cc_callback. php, у меня не было возможности обнаружить обратный вызов. Я предполагал, что операторы echo позволят мне увидеть ответ API на (Chrome) сетевой вкладке инструментов разработчика моего браузера. Но, конечно, операторы echo отражаются на клиенте, который «вызвал» его с помощью запроса GET. В этом случае этот клиент - это API, а не страница моего браузера / html.

Поняв это, я легко смог проверить, все ли сработало, добавив mail(myemailaddress@gmail.com, 'This is the url returned to the callback',$GET[url]); к моему php сценарию (показан в вопросе). Это отправило мне электронное письмо, когда я отправил изображение в API для обработки, и таким образом подтвердил, что API выполняет обратный вызов.

Код скручивания в вопросе хорош. Это делает успешный запрос к API.

Наконец, код curl предназначен для запроса к API CloudConvert версии 1. Существует версия 2, но приведенный выше код не подходит для этого. Кроме того, есть более ранний запрос curl, который должен использоваться вместе с вышеупомянутым, который я опубликую позже для полноты картины.

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