Bonjour !
J'ai une question, je bloque sur une subtilité.
J'interroge un serveur distant avec datasnap grâce à curl.
La méthode que j'appelle est SendAuthentification avec deux arguments vsLogin et vsPass.
Voilà mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $url = 'http://xx.xxx.xx.xx:8089/datasnap/rest/TServerMethods1/%22SendAuthentification%22/' ;
$ch = curl_init() ;
curl_setopt( $ch , CURLOPT_HTTPHEADER, array ( "Accept: application/json" , "Content-Type: text/xml; charset=utf-8" ) ) ;
curl_setopt( $ch , CURLOPT_HEADER , FALSE ) ;
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true ) ;
curl_setopt( $ch , CURLOPT_POST , TRUE ) ;
curl_setopt( $ch , CURLOPT_URL , $url ) ;
curl_setopt( $ch , CURLOPT_POSTFIELDS , json_encode(array("vsLogin"=>"toto","vsPass"=>"tata"))) ;
$result = curl_exec( $ch ) ;
echo '<pre>';
print_r ($result);
echo '</pre>'; |
Mais ça ne marche pas :
{"error":"Impossible de convertir l'entr\u00E9e {\"vsLogin\":\"toto\",\"vsPass\":\"tata\"} de la valeur JSON en TDBXTypes.WideString"}
la faute a
curl_setopt( $ch , CURLOPT_POSTFIELDS , json_encode(array("vsLogin"=>"toto","vsPass"=>"tata"))) ;
Avez une idée du problème ?
Avec une méthode et 1 seul argument ça fonctionne :
curl_setopt( $ch , CURLOPT_POSTFIELDS , json_encode("valeur de l'argument 1")) ;
Deux arguments je n'arrive pas à comprendre...
Partager