Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SOAP : client php / serveur java

4 réponses
Avatar
Benoît
Bonjour,
J'ai un probl=E8me 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 =3D new String[message.length];

[...]

return messageend;

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

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

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

L'erreur :

"JAXRPCTIE01: caught exception while handling request: unexpected
element type:
expected=3D{http://mywebservice/...}StringArray,actual=3D{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 =E0 ce probl=E8me?
Merci de votre aide

4 réponses

Avatar
damien guerin
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
Avatar
Benoît
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"

...?
Avatar
Kupee
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 ...

Avatar
Benoît
Bonne idée merci