2012-08-24 1 views
1

Lorsque je tape http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx dans le navigateur et appuyez sur Entrée, j'obtiens la réponse XML suivante.PHP GET Demande ne fonctionne pas

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?> 
<accountBalance> 
    <creditLimit>0.0</creditLimit> 
    <quotaEnabled>true</quotaEnabled> 
    <value>2.0</value> 
</accountBalance> 

Mais quand je suis en train de la même URL dans PHP, il envoie la réponse Page non trouvée (Oops! Cette page n'existe pas.). Voici quelques façons que j'essaie ...

Utilisation SimpleXML

$content = simplexml_load_file($this->request_uri); 

En utilisant des méthodes de fichier

$content = file_get_contents($this->request_uri); 

Utilisation CURL

// create a new cURL resource 
    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, $this->request_uri); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 

    // grab URL and pass it to the browser 
    $content = curl_exec($ch); 

    // close cURL resource, and free up system resources 
    curl_close($ch); 
  • $this->request_uri = même URL que je colle dans le navigateur. Où je me trompe? Aidez-moi s'il vous plaît à ce sujet. Je vous remercie.
+4

D'accord. Vérifiez: 1. cookies 2. referer 3. user-agent – Peter

+0

@Peter, Qu'est-ce qui se passera après avoir vérifié cela? Un indice? –

+0

je voulais dire que vous devriez utiliser les mêmes cookies, Referer et utilisateur dans la demande cURL que le navigateur – Peter

Répondre

1

Il y a plus d'informations qui est en cours de transfert du navigateur au serveur que seul l'URI:

http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx 

En ne passant l'URI, mais pas passer l'autre information qui est transmis à partir du navigateur, vous peut obtenir des résultats différents normalement. Dans votre cas, il est clair que vous obtenez des résultats différents.

Informez-vous sur les autres informations transmises au serveur lorsque vous demandez cet URI avec votre navigateur. Cette autre information s'appelle request-line, request-headers et le corps. Dans une requête GET, le corps de la requête est normalement vide si vous avez seulement besoin de se concentrer sur la demande en ligne et en-têtes, voir:

Contactez la documentation technique de votre navigateur si elle a ce que l'on appelle les outils de réseau qui sont capables d'afficher toute l'information de demande à des fins de débogage (par exemple, Chromium a ceci, pour Firefox, il y a l'extension Firebug qui l'a).

Vous pouvez ensuite imiter facilement la demande avec PHP's HTTP wrapper context optionsDocs ou Curl extension and it's endless array of optionsDocs pour obtenir ce que vous voulez.

+0

très belle explication ... mais comment mon problème sera résolu? ou ce que je dois faire? –

+0

quel navigateur utilisez-vous? – hakre

+0

N'importe quel navigateur même problème, il ne devrait pas être dépendant du navigateur, c'est une application de sms. –