Я использую Symfony под портом 8000. Но HTTP-протокол curl находится на 80-м порту.
Это означает, что мой запрос curl не работает, так как я думаю, что порт не в порядке.
Я пытался указать порт для скручивания.Но из-за этого происходит сбой запроса на вызов ... У меня нет сообщения об ошибке, это как ожидание, когда я пытаюсь вызвать его.
Я уже проверил эту проблему: Невозможно сделать запрос php curlс номером порта
Мой $ url похож на http://127.0.0.1/app_dev.php/api/someapi
здесь $result = $this->lib->CallAPI('POST', $url, $postfields);
При запуске в Symfony для поиска URL, у меня должно быть 127.0.0.1:8000
Но либо я попытался установить порт в URL с не установленным параметром curl для порта.Либо я пытаюсь использовать URL без порта, но устанавливая параметр curl для порта.Это всегда не удавалось.
Вот функция совершения вызова
function CallAPI($method, $url, $data = false)
{
$curl = curl_init();
switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
curl_setopt($curl,CURLOPT_PORT, 8000);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
}
Строка curl_setopt($curl,CURLOPT_PORT, 8000);
, кажется, отвечает за выполнение моего запроса ожидающим.
Обратите внимание, что вызов API от Почтальона работает, поэтому проблема действительно в том, как я называю его curl.
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ:
Я использовал небольшую хитрость, чтобы увидеть, что не так.
вместо возврата $ result в callApi () я возвращаю $ curl.он возвращает мне некоторый HTML-код внутри этого
<h1 class="break-long-words exception-message">Whoops, looks like something went wrong.</h1>
<p class="break-long-words trace-message">An instance of Symfony\Bundle\FrameworkBundle\Templating\EngineInterface must be injected in FOS\RestBundle\View\ViewHandler to render templates.</p>
Но я не понимаю, почему определение переменной $ curl делает эту ошибку, учитывая, что вызываемый API работает с почтальоном
EDIT2: ВНа самом деле эта ошибка возникла из-за попытки конвертировать объект curl в json с помощью json_decode ... так что делать нечего.Сожалею.Проблема все еще там тогда.