如何接受byte []作为对POST的响应

时间:2014-06-30 12:38:33

标签: java web-services grails bytearray apache-commons-httpclient

我正在向服务发出POST请求并发送文件。在此POST请求的响应中,服务以byte[]回复。如何在代码中访问返回的byte[]

这就是我使用apache-commons-httpclient

在我的客户端代码中执行POST的方法
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 个答案:

答案 0 :(得分:1)

使用Base64 encoding将响应数据发送到您的客户端。

您的客户端收到Base64字符串并将其解码为字节数组。