function ParseUrl($URL) { $crl = curl_init(); curl_setopt ($crl, CURLOPT_URL, $URL); curl_setopt ($crl, CURLOPT_PORT, 8086); curl_setopt ($crl, CURLOPT_USERPWD, "admin:pass"); curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, 5); $ret = curl_exec($crl); curl_close($crl); return $ret; } echo ParseUrl('http://xxx.me/serverinfo');
Приведенный выше код просто ничего не возвращает. На странице, которую я пытаюсь получить с помощью curl, используется свойство проверки подлинности HTTP.
Я пропустил что-то простое или что?
Начните с этого и посмотрите, что вы получите, и после этого было бы довольно очевидно, в чем проблема:
Проверьте, была ли ошибка с запросом после curl_exec:
if(curl_errno($ch)){ echo 'Curl error: ' . curl_error($ch); }
Это даст вам достаточно информации, чтобы узнать, была ли ошибка с запросом. Если ошибки не было, вы можете проверить запрос, отправленный после curl_exec, чтобы вы могли дважды проверить, что все отправленное на месте:
print_r(curl_getinfo($ch));
Изменить: после комментариев это то, что вы ищете, чего не хватает:
Вам нужно установить параметр CURLOPT_HTTPAUTH
.
Цитата из php.net по теме :
Используемые методы HTTP-проверки подлинности. Возможны следующие варианты: CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY и CURLAUTH_ANYSAFE.
Побитовое | (или) можно использовать для объединения нескольких методов. Если это будет сделано, cURL опросит сервер, чтобы узнать, какие методы он поддерживает, и выберите лучший.
CURLAUTH_ANY – псевдоним для CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.
CURLAUTH_ANYSAFE является псевдонимом для CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.