Я хочу отправить байтовый массив из веб-сервиса клиенту, который запрашивает операцию, предоставляемую через сервис.В моем методе я читаю изображение в байтовый массив.Я думаю, поместите этот массив байтов в оболочку POJO.Это тип возврата для операции.
@Override
public ImageWrapper getImage() {
File imageFile = new File("C:\\images\\car.jpg");
ImageWrapper wrapper = null;
try {
BufferedImage img = ImageIO.read(imageFile);
ByteArrayOutputStream baos = new ByteArrayOutputStream(1000);
ImageIO.write(img, "jpg", baos);
baos.flush();
byte[] result = baos.toByteArray();
baos.close();
wrapper = new ImageWrapper();
wrapper.setContent(result);
System.out.println("Service image wrapper: " + wrapper);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return wrapper;
}
Я могу получить объект ImageWrapper в клиенте, хорошо.Как и следовало ожидать, он отличается от идентификатора экземпляра ImageWrapper, который создается веб-службой на сервере.Но проблема в том, что когда я пытаюсь получить массив byte [] из ImageWrapper, он становится пустым ... Есть идеи, почему?Класс оболочки выглядит следующим образом:
package soap.service.model;
public class ImageWrapper {
private byte[] content;
public void setContent(byte[] content) {
this.content = content;
}
public byte[] getImg() {
return this.content;
}
}
, а клиент выглядит так:
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import soap.service.model.ImageWrapper;
import soap.service.sei.ImageSei;
public class ImageClient {
public static void main(String... args) throws MalformedURLException {
URL url = new URL("http://localhost:8080/image?wsdl");
QName qname = new QName("http://impl.service.soap/", "ImageImplService");
Service service = Service.create(url, qname);
ImageSei sei = service.getPort(ImageSei.class);
ImageWrapper iw = sei.getImage();// This is ok
System.out.println(iw.getImg()); // * This is null
}
}
=======================================================================
Обновление Даже если я изменю байтовый массив в ImageWrapper на String, он все равно возвращается как «ноль» в клиенте.Мой веб-сервис также настроен на использование стиля «Документ».