2011-07-25 2 views
0

J'ai un code simple:Pourquoi file_get_contents() renvoie "Erreur d'application"?

$t = file_get_contents("http://sub.example.com/list?u=test&passw=12345"); 

Si j'imprimer ce résultat je reçois texte "Erreur d'application".

Je ne comprends vraiment pas la raison, si j'essaie d'ouvrir cette URL sur le navigateur je le vois parfaitement.

Il renvoie les données "application/json".

+1

mon être l'url renvoie que .... – Subdigger

Répondre

2

Il est possible que l'application Web sub.example.com attende une entrée supplémentaire en dehors de ce qui entre dans l'URL (par exemple un cookie), ne trouve pas cette entrée et des erreurs. Dans tous les cas, il est certain que les demandes HTTP générées par (a) votre programme et (b) votre navigateur sont pas identiques, sinon l'application présenterait le même comportement dans les deux cas.

Pour déboguer, vous pouvez effectuer les opérations suivantes:

  • Réécrire le code à utiliser cURL au lieu de file_get_contents, de sorte que vous pouvez spécifier un proxy HTTP
  • Installer Fiddler, un proxy de débogage HTTP fantastique
  • Passez la requête HTTP que votre application génère et une donnée manuellement via le navigateur via Fiddler
  • Trouvez les différences (vous pouvez simplement faire une comparaison de texte sur les demandes), cela va lea d vous à la réponse
+0

exactement ... alors que puis-je faire? Est-ce que je dois annoncer un agent d'utilisateur? (pour ressembler à un navigateur?) – Dail

+0

@Dail: Vous devez d'abord trouver toutes les différences entre les requêtes HTTP, puis les examiner une par une, à moins que vous ayez une connaissance spécifique de l'application cible, ce qui devrait vous aider à problème plus facilement – Jon

+0

Fixé en utilisant CURL, merci! – Dail

Questions connexes