Intereting Posts
PHP: доступ к Bluetooth GPS через последовательный порт (SPP) COM3 я получил эту ошибку 500 | Внутренняя ошибка сервера | Doctrine_Connection_Mysql_Exception Проблема с сортировкой PHP с помощью simpleXML Как разместить массив в MySQL Обеспечение безопасности до Mac OS X Server 10.5.x как построить хороший маршрутизатор для php mvc Невозможно удалить утечку и утечку памяти как я могу удалить тестовый заказ от magento 5 .htaccess Переопределяет: принудительно HTTPS, удаляет index.php, удаляет .php, Force www, принудительное сглаживание слэша CodeIgniter – Не удается получить доступ к сообщению об ошибке, соответствующему имени вашего поля Password. (Pword_check) Как извлечь rar / архивные файлы и папки с помощью php в windows? PHP – включить php-файл, а также отправить параметры запроса Параметр от url с php и записать его в переменную js в условии if Laravel 5 / Lumen Request Header? Определение значений по умолчанию для полей формы Laravel

Почему cURL всегда возвращает код состояния?

У меня есть код PHP, который вызывает библиотеку cURL. Я использую его для получения данных JSON.

Я установил cURL opt 'CURLOPT_RETURNTRANSFER' в 1, но все равно получаю код состояния.

Код следует:

<?php function fetch_page($url) { $ch = curl_init(); $array = array( 'include'=>'ayam' ); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $array); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec ($ch); curl_close ($ch); return $result; } $return = fetch_page(MY_LINK_URL); echo json_decode($return); ?> 

Код выглядит совершенно правильно. Попробуйте var_dump($result) прежде чем возвращать его, чтобы увидеть, что именно.

Кроме того, установите CURLOPT_HEADER в 1 и проверьте источник представления вывода в своем браузере; оба из них могут помочь отладить проблему. Измените вопрос и опубликуйте результаты, если мы сможем помочь более эффективно.

Обновление: поскольку вы используете HTTPS, также добавьте

 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

Это выглядит правильно. У меня на самом деле такая же проблема, но когда я добавил

 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

он возвращает код json правильно, а не возвращает 1 (True).

Согласно документам PHP ,

Возвращает TRUE при успешном завершении или FALSE при сбое. Однако, если параметр CURLOPT_RETURNTRANSFER установлен, он вернет результат успеха, FALSE при сбое.

Это означает, что вы должны добиться успеха: сбой результата: FALSE (который отображается как 0)

Кроме того, если вы извлекаете JSON и должны получить к нему доступ, используйте json_decode () not json_encode ().

Ну, вы должны сообщить нам, какой URL-адрес вы указываете (и какую версию php вы используете). Я пробовал с php 5.3 на «www.google.com», и он работал как ожидалось ($ result содержит всю веб-страницу)

У проблемы была такая же проблема: – cURL по локальной сети с проблемой виртуального хоста

Перед тем, как закрыть ручку curl, выполните следующие действия:

 $result = curl_exec ($ch); print_r(curl_getinfo($ch)); curl_close ($ch); 

Вот мое решение для обхода виртуального хоста

 // This is your Virtual Hosts name $request_host = 'dev.project'; // This is the IP $request_url = '192.168.0.1'; $headers = array("Host: ".$request_host); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_URL, $request_url.'?'.$request_args); curl_setopt($ch, CURLOPT_HEADER, FALSE); 

По-видимому, существует ряд причин, по которым CURLOPT_RETURNTRANSFER можно игнорировать, а проверка сертификатов SSL – только одна из них:

В моем случае виновником был CURLOPT_POST который я установил для true . Я ожидал вернуть строку, состоящую из заголовка ответа HTTP и самого ответа. Вместо этого я получил код состояния 1 . Идите фигуру. К счастью, мне не нужен HTTP-заголовок, поэтому решение для меня было:

 curl_setopt($ch, CURLOPT_HEADER, false); 

Если мне нужна информация заголовка, я не знаю, что бы я сделал. Я потратил немного времени на то, чтобы устранить проблему.

Черт бы тебя побрал! (волна кулаком в гневе)