PHP CURL ne renvoie rien

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');

Le code ci-dessus ne renvoie simplement rien. La page que j'essaie d'obtenir avec curl utilise l'authentification http.

Est-ce que je manque quelque chose de simple ou quoi?

21
demandé sur jM2.me 2011-06-13 01:33:48

1 réponses

Commencez par faire ceci et voyez ce que vous obtenez, et après cela, il serait assez évident Quel est le problème:

Vérifiez s'il y a eu une erreur avec la requête après curl_exec:

if(curl_errno($ch)){
    echo 'Curl error: ' . curl_error($ch);
}

Cela vous fournira suffisamment d'informations pour savoir s'il y a eu une erreur avec la demande. S'il n'y a pas eu d'erreur, vous pouvez vérifier la requête envoyée après curl_exec afin de vérifier que tout ce qui est envoyé est en place:

print_r(curl_getinfo($ch));

Edit: après les commentaires, c'est ce que vous cherchez pour ce qui manque:

, Vous devez définir l'option CURLOPT_HTTPAUTH.

Citation de php.net sur le sujet:

La ou les méthodes D'authentification HTTP pour utiliser. Les options sont: CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, et CURLAUTH_ANYSAFE.

L'opérateur bit à bit | (ou) peut être permet de combiner plus d'une méthode. Si cela est fait, cURL interrogera le serveur pour voir quelles méthodes il prend en charge et de prendre la meilleure.

CURLAUTH_ANY est un alias pour CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

CURLAUTH_ANYSAFE est un alias pour CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.

54
répondu rzetterberg 2011-06-12 21:55:17