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

标签 java web-services grails arrays 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
}

最佳答案

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

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

关于java - 如何接受 byte[] 作为对 POST 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490354/

相关文章:

java - 检测主要 Activity 中 fragment 的 onclick

java - 迁移到 Spring Annotated Controllers 和传统的 onSubmit 方法

javascript - 如何从客户端脚本使用远程 Web 服务?

hibernate - 我应该在Grails项目中的哪里写标准查询?在服务层还是在域模型中?

grails - Grails运行应用程序:任务 ':bootRun'的执行失败。错误:无法启动服务器

java - 输入路径的字符串替换 : "\" to "/"

java - 屏幕旋转后创建位图时出现 OutOfMemoryError

php - 收集、管理数据并通过 API 提供

javascript - 使用 PHP 列出来自使用 SOAP 的 Web 服务的信息

testing - Grails 集成测试过滤器