J'essaie de demander une URL mais cela échoue et lorsque je vide le résultat de curl exec, il renvoie false.

http://mydomain.com:8807/getstate/?zipcode=22311&field=statecode

Dans le navigateur, je peux y accéder et il renvoie le corps de contenu HTTP correct, le type de contenu est text/html.

Si je le change en:

http://mydomain.com:8807/getstate/?zipcode=22311&field=state

Ce qui est le même service REST sauf que la valeur du paramètre est différente, mes trucs curl fonctionnent bien. Comment cela pourrait-il être ?

Je ne fais pas plusieurs demandes, je ne fais qu'une seule instance.

$url = 'http://mydomain.com:8807/getstate/?zipcode=22311&field=state';

Ce qui est le même service REST sauf que la valeur du paramètre est différente, mes trucs curl fonctionnent bien. Comment cela pourrait-il être ?

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
$request = curl_exec( $ch );
var_dump($request);

Je suis plutôt sûr que ce n'est pas une faute de frappe, je ne trouve pas de raison. Il renvoie bool(false) pour le code d'état mais renvoie la bonne chose pour l'état.

Mise à jour : Il semble que les en-têtes de réponse ne soient pas appropriés - le navigateur est indulgent et affiche la page indépendamment des en-têtes incorrects (ou de leur absence).

0
meder omuraliev 19 mars 2010 à 22:15
1
Vous ne précisez pas quel est le problème ?
 – 
Pekka
19 mars 2010 à 22:17
Ajouté en dernier, il renvoie bool false pour le var dump.
 – 
meder omuraliev
19 mars 2010 à 22:18
Et où est la source du serveur ?
 – 
Byron Whitlock
19 mars 2010 à 22:19
Que se passe-t-il lorsque vous le mettez dans un navigateur ? Je doute fortement que ce soit un problème de curl. C'est très probablement un problème côté serveur.
 – 
Byron Whitlock
19 mars 2010 à 22:19
- J'ai précisé que dans le navigateur j'obtiens bien le contenu, pour la même url. Je ne peux pas préciser la source exacte cependant.
 – 
meder omuraliev
19 mars 2010 à 22:19

2 réponses

Meilleure réponse

Il vous manque quelque chose. Activez le débogage curl pour vous en dire plus curl_setopt($ch, CURLOPT_VERBOSE, true); Voir également ce qui est renvoyé dans firebug, et utilisez fiddler pour aider au débogage.

1
Byron Whitlock 19 mars 2010 à 22:23

Essayez de définir le même agent utilisateur d'un navigateur dans Curl avant de faire la demande...

Si cela fonctionne avec le navigateur, cela devrait fonctionner de cette manière.

1
Giovanni Di Milia 19 mars 2010 à 23:31