Bonjour,
J'ai des soucis pour transferer des chaines de caracteres composees de caracteres speciaux.
Mon serveur est en PHP.
Si je fais un client PHP, celui-ci communique correctement la chaine.
Voici le code du serveur PHP:
et mon client PHP qui fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php include("xmlrpcutils/xmlrpc.inc.php"); include("xmlrpcutils/xmlrpcs.inc.php"); function getTest($param){ $fp = fopen("/tmp/debug.xmlrpc.txt","a"); fwrite($fp, date("d.m.y H:i:s : ")."parametre : ---".$param."---\n"); fclose($fp); return new xmlrpcresp(new xmlrpcval('90', 'int')); } $server = new xmlrpc_server( array( "getTest" => array("function" => "getTest", "signature" => array(array($xmlrpcInt, $xmlrpcString))) ),false); $server->functions_parameters_type = 'phpvals'; $server->response_charset_encoding = 'ISO-8859-1'; $server->service(); ?>
et voici mon client python qui n'envoit pas les données correctement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php include "xmlrpcutils/xmlrpc.inc.php"; $xmlrpc_client = new xmlrpc_client('/server_test.php','monserveur',80); // 2: CONSTRUCT THE REQUEST (AN XML-RPC MESSAGE) $xmlrpc_msg = new xmlrpcmsg('getTest', array(new xmlrpcval('caractères','string'))); // 3: SEND THE REQUEST $xmlrpc_resp = $xmlrpc_client->send($xmlrpc_msg); // 4: WORKING WITH THE SERVER'S RESPONSE if ($xmlrpc_resp == False) // check for successful transaction die('error message'); if (!$xmlrpc_resp->faultCode()) { }?>
Mes caractères non ascii sont d'office remplacés par des "?".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 import xmlrpclib server = xmlrpclib.Server('http://monserveur/server_test.php'); machaine = "Ceci est un test avec des caractères très spéciaux..." result = server.getTest(machaine) print "Result:", result
Une idée serait la bienvenue.
Merci d'avance.
J
Partager