Привет, я сделал небольшой пример, чтобы показать мою проблему.Вот мой веб-сервис:
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;
}
}
Я упаковываю его в файл jar и сохраняю в папке "axis2-1.5.1 / repository / servicejars".Затем я создаю клиентский прокси, используя Eclipse для EE утилит по умолчанию.И используйте его в моем коде следующим образом:
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);
А вот что печатает мой клиент:
Redirect string
Hello - is what you sended
Redirect bytes
3
0
Gen bytes
5
А на сервере у меня есть:
### redirectBytes
### bytes lenght:0
### message
Таким образом, байтовый массив обычно может быть передан из сервиса, но не принят от клиента.И это прекрасно работает со строками.Сейчас я использую Base64Encoder, но мне не нравится это решение.