Следующий код будет извлекать содержимое тела URL-адреса, полученного с использованием CURL в php, но не https. Может ли кто-нибудь сказать мне, как я редактирую код, поскольку мне нужно вернуть данные не только заголовку.
Из теста я сделал вот результат. Вы можете видеть, что он имеет длину контента, я просто не знаю, как получить к нему доступ.
Спасибо, Стивен
Ошибки: 0
(1457) «HTTP / 1.1 200 OK Дата: Сб, 01 авг 2009 06:32:11 GMT Сервер: Apache / 1.3.41 (Дарвин) PHP / 5.2.4 mod_ssl / 2.8.31 OpenSSL / 0.9.7l Кэш- Управление: max-age = 60 Истекает: Сб, 01 авг 2009 06:33:11 GMT Last-Modified: Thu, 23.11.2006 17:44:53 GMT ETag: «97d620-44b-4565de15» Accept-Ranges: bytes Содержимое -Length: 1099 Connection: close Content-Type: text / html "
<?php $curl_handle=curl_init(); $username = ""; $password = ""; $fullurl = "http://www.queensberry.com"; $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_FAILONERROR, 0); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_URL, $fullurl); $returned = curl_exec($ch); curl_close ($ch); var_dump($returned); ?>
Вот решение: попробуйте это, просто сохраните остальную кодировку, как указано выше …
$ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_VERBOSE, 1); //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_FAILONERROR, 0); // curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_URL, $fullurl); $returned = curl_exec($ch); curl_close ($ch); var_dump($returned);
Изменение CURLOPT_HEADER на 0 приводит к тому, что возвращается только содержимое страницы.
Должна ли $fullurl
быть « https://www.queensberry.com »?
Когда я изменил $fullurl
как указано и запустил код, var_dump
отобразил var_dump
«under construction».
если вам все еще нужен заголовок, что означает, что настройка CURLOPT_HEADER на 0 не является опцией, вы можете найти начало тела, ища пустую строку (два CRLF). См. Спецификацию: http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html
так что это должно сработать:
$data = curl_exec($ch); $start = strpos($data, "\r\n\r\n") + 4; $body = substr($data, $start, strlen($data) - $start);
Я ищу длину заголовка, используя curinfo getinfo. Затем подстройте ответ:
$info = curl_getinfo($ch); $start = $info['header_size']; $body = substr($result, $start, strlen($result) - $start);