Bonjour, J'ai créé un petit exemple pour montrer mon problème. Voici mon service web:Échec de l'envoi d'un tableau d'octets au service Web JAX-WS sur l'axe
package service;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class BytesService {
@WebMethod
public String redirectString(String string){
return string+" - is what you sended";
}
@WebMethod
public byte[] redirectBytes(byte[] bytes) {
System.out.println("### redirectBytes");
System.out.println("### bytes lenght:" + bytes.length);
System.out.println("### message" + new String(bytes));
return bytes;
}
@WebMethod
public byte[] genBytes() {
byte[] bytes = "Hello".getBytes();
return bytes;
}
}
J'emballons dans le fichier jar et stocker dans le dossier "axis2-1.5.1/dépôt/servicejars". Ensuite, je génère un proxy client en utilisant les utilitaires par défaut d'Eclipse for EE. Et l'utiliser dans mon code de la manière suivante:
BytesService service = new BytesServiceProxy();
System.out.println("Redirect string");
System.out.println(service.redirectString("Hello"));
System.out.println("Redirect bytes");
byte[] param = { (byte)21, (byte)22, (byte)23 };
System.out.println(param.length);
param = service.redirectBytes(param);
System.out.println(param.length);
System.out.println("Gen bytes");
param = service.genBytes();
System.out.println(param.length);
Et voici ce que mes impressions client:
Redirect string
Hello - is what you sended
Redirect bytes
3
0
Gen bytes
5
Et sur le serveur j'ai:
### redirectBytes
### bytes lenght:0
### message
tableau donc octet peut normalement être transféré du service, mais n'est pas accepté du client. Et ça fonctionne bien avec les cordes. Maintenant, j'utilise Base64Encoder, mais je n'aime pas cette solution.