SOAP : client php / serveur java

Le
Benoît
Bonjour,
J'ai un problme pour envoyer un tableau de chaines depuis un client
php vers un serveur java en appelant un webservice.
Le serveur ne reconnait pas le type tableau de chaine de php.

Le code :
-- Java server method : --

public String[] crypte(String[] message, String name) throws
RemoteException {
String[] messageFinal = new String[message.length];

[]

return messageend;

}catch(Exception e){
throw new RemoteException(e.getMessage(), e);
}
}

-- PHP client : --
$message= array ("aze","sdsq","jhgjhgh");
$wsdl = new SOAP_WSDL($url);
$client= $wsdl->getProxy();
[]
$messageCrypte = $client->crypte($message, "test");


Ca marche bien avec une chaine simple, par exemple :
$message="jkjhkj"; avec sur le serveur :
public String[] crypte(String message, String name){}

L'erreur :

"JAXRPCTIE01: caught exception while handling request: unexpected
element type:
expected={http://mywebservice/}StringArray,actual={http://mywebservi=
ce/}Array"

Ca marche bien aussi dans l'autre sens : le serveur envoie un tableau
de string et je peux voir le contenu en php : print_r($messageCrypte).

Comment remedier ce problme?
Merci de votre aide
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
damien guerin
Le #197670
Ta fonction devrait être :

public String[] crypte(Object[] message, String name)

Dans ta fonction, tu castes les éléments du tableau avec String. En
fait si mes souvenirs sont bons, avec la fonction array de php tu peux
mettre à la fois des entiers que des chaines de caractères du coup le
webservice doit surement envoyé un tableau d'Object afin de couvrir
les possibilités de array php.

Voili
Benoît
Le #197629
Merci pour ta réponse,

J'ai bien sûr essayé de mettre Object mais l'erreur suivant survient
lors de la compilation :
"error: invalid type for JAX-RPC structure: java.lang.Object"

...?
Kupee
Le #197628
Benoît wrote:
Bonjour,
J'ai un problème pour envoyer un tableau de chaines depuis un client
php vers un serveur java en appelant un webservice.
Le serveur ne reconnait pas le type tableau de chaine de php.

Le code :
----- Java server method : -----

public String[] crypte(String[] message, String name) throws
RemoteException {
String[] messageFinal = new String[message.length];

[...]

return messageend;

}catch(Exception e){
throw new RemoteException(e.getMessage(), e);
}
}

----- PHP client : -----
$message= array ("aze","sdsq","jhgjhgh");
$wsdl = new SOAP_WSDL($url);
$client= $wsdl->getProxy();
[...]
$messageCrypte = $client->crypte($message, "test");

------------------------
Ca marche bien avec une chaine simple, par exemple :
$message="jkjhkj"; avec sur le serveur :
public String[] crypte(String message, String name){...}

L'erreur :

"JAXRPCTIE01: caught exception while handling request: unexpected
element type:
expected={http://mywebservice/...}StringArray,actual={http://mywebservice/...}Array"

Ca marche bien aussi dans l'autre sens : le serveur envoie un tableau
de string et je peux voir le contenu en php : print_r($messageCrypte).

Comment remedier à ce problème?
Merci de votre aide


Tu pourrais tenter de lire le paquet soap qui passe voir si c'est pas
par hazard une liste ou une map qui passe ...

Benoît
Le #197626
Bonne idée merci
Poster une réponse
Anonyme