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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 curl_setopt( $ch , CURLOPT_POSTFIELDS , json_encode("valeur de l'argument 1")) ;
Deux arguments je n'arrive pas à comprendre...