Как принять байт [] в качестве ответа на сообщение

#java #web-services #grails #bytearray #apache-commons-httpclient

#java #веб-сервисы #grails #массивы #apache-commons-httpclient

Вопрос:

Я делаю POST запрос к службе и отправляю файл вместе. В ответ на этот POST запрос служба отвечает ответом a byte[] . Как я могу получить доступ к возврату byte[] в моем коде?

Вот как я делаю POST в своем клиентском коде, используя apache-commons-httpclient

 public void sendFile(InputStream is) throws Exception {
    HttpClient client = new HttpClient();
    PostMethod method = new PostMethod("http://service:8080/myservice/request/testimage");
    ByteArrayPartSource bpa = new ByteArrayPartSource("s.jpg",IOUtils.toByteArray(is));
    Part[] parts = new Part[] {
            new FilePart("myFile", bpa)
    };
    method.setRequestEntity(
            new MultipartRequestEntity(parts, method.getParams())
    );
    client.executeMethod(method);
}
  

Служба также написана мной, и я контролирую ее. Он написан в grails и выглядит следующим образом:

 //Domain
class Image {
    byte[] myFile
    static constraints = {
        myFile maxSize: 1024 * 1024 * 2
    }
}
//Controller
def testimage() {
    def img = new Image(params)
    byte[] fileBytes = service.performChangesToFile(img.myFile)
    render fileBytes
}
  

Комментарии:

1. method.responseBody должен вернуться byte[]

Ответ №1:

Используйте кодировку Base64 для отправки данных ответа вашему клиенту.

Ваш клиент получает строку Base64 и декодирует ее в массив байтов.