Comment obtenir le tableau de la valeur comme valeur de retour sur curl de php demande?
Je vais avoir dur moment à l'aide de curl de PHP comme je suis nouveau en PHP. Le problème est que je n'obtiens pas de valeur de retour d'une demande curl. Il y a un fichier distant, je suis accédant à qui a ce code:
test.php:
$test->getCall();
public function getCall() {
$var = array('fname'=>'jack','lname'=>'williams');
return $var;
}
Le script à partir de laquelle je suis en train de l'appeler.
requestVal.php
try{
$ch = curl_init();
if (FALSE === $ch){
throw new Exception('failed to initialize');
}
curl_setopt($ch, CURLOPT_URL,"http://www.xyz.com/app/src/test.php");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $msg);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$p_result = curl_exec($ch);
var_dump($p_result);
print_r($p_result);
if (FALSE === $p_result) {
throw new Exception(curl_error(), curl_errno());
curl_close($ch);
} else{
curl_close($ch);
return $p_result;
}
}catch(Exception $e) {
trigger_error(sprintf('Curl failed with error #%d: %s',$e->getCode(), $e->getMessage()),E_USER_ERROR);
}
Je n'obtiens aucune valeur dans $p_result
ni une exception curl_error()
.
Est getCall une méthode d'une classe?
dans le code oui, et je l'appelle par son objet qui $test dans ce cas
Votre problème n'est pas curl en PHP. Au lieu de corriger le script doit retourner quelque chose et de le tester sans l'cpdn script PHP. Curl seulement prendre (que du texte) ce que le script de votre demande avec curl n'retour. Afin de tester la valeur de retour du script en premier et ensuite vous trouverez votre erreur réelle. Demander PHP curl ici n'est pas constructif, donc, c'est juste le mauvais bout. Alors faites une base de débogage d'abord et vous devriez être en mesure de voir plus clair. E. g. demande
dans le code oui, et je l'appelle par son objet qui $test dans ce cas
Votre problème n'est pas curl en PHP. Au lieu de corriger le script doit retourner quelque chose et de le tester sans l'cpdn script PHP. Curl seulement prendre (que du texte) ce que le script de votre demande avec curl n'retour. Afin de tester la valeur de retour du script en premier et ensuite vous trouverez votre erreur réelle. Demander PHP curl ici n'est pas constructif, donc, c'est juste le mauvais bout. Alors faites une base de débogage d'abord et vous devriez être en mesure de voir plus clair. E. g. demande
test.php
avec le curl ligne de commande client et voir le résultat. Toujours un outil utile d'avoir à portée de main.OriginalL'auteur user1371033 | 2012-12-02
Vous devez vous connecter pour publier un commentaire.
Peu importe ce que vous l'écho dans votre
test.php
, curl lire comme uneString
. Dans votre cas, vous echo rien. Vous appelez une fonction qui retourne un tableau, mais vous ne pouvez pas imprimer le tableau, rien n'est envoyé vers la sortie. Si vous voulez obtenir le même tableau dansrequestVal.php
après demande curl, vous devez encoder d'une certaine manière, je dirais JSON comme il est facile de commencer avec. Pour un exemple rapide, à la place de$test->getCall();
que vous pouvez faire:Et dans
requestVal.php
:Vous pouvez trouver chaque description de fonction au
php.net
.très bonne aide à mon problème aussi
OriginalL'auteur Ranty
Si vous êtes en utilisant curl vous devriez vous attendre exactement le même résultat que vous obtiendrez si vous exécutez votre test.php script dans n'importe quel navigateur. Donc, si votre test.php c'est comme:
dans votre navigateur, vous verrez "123" et c'est aussi, vous aurez obtenir à l'intérieur de votre
$p_result
variable. Si votre test.php c'est comme:Vous ne voyez rien dans le navigateur et d'obtenir rien du tout dans votre
$p_result
.Donc, essayez de changer votre test.php dans quelque chose comme:
OriginalL'auteur Cyprian
comme alias ranty dit, vous pouvez retourner une chaîne de caractères à test.php code
Vous pouvez donc pris une sérialisation des données à requestVal.php code, par unserialize des données à partir du serveur distant
OriginalL'auteur Imran Nababan