当前位置: 首页 > 知识库问答 >
问题:

Jersey客户端API-发布输入流

戚成礼
2023-03-14

实现这一点的最佳方式是什么:

我的应用程序允许用户上传图像,这是通过RESTful服务完成的,编码为“多部分/表单数据”。

现在,在服务的主体中,我真的不需要保存这个文件,但是我想用它来传递和调用另一个服务。所以我可以使用泽西客户端应用编程接口进行另一次调用,而不一定需要将文件保存到磁盘,然后传递所谓的“临时”文件。

以下是我的一些代码:

@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

            //Given that I have ‘uploadedInputStream’ can I just pass this  
            //directly into the second call, below?

            ClientConfig config = new DefaultClientConfig();
            Client client = Client.create(config);
            WebResource wr = client.resource(baseURI);
            ClientResponse response = wr.type("image/*")
                                        .entity(uploadedInputStream)   //legal??
                                        .post(ClientResponse.class);

    }
}

我猜上述方法的替代方法是暂时保存文件,然后传入一个java实例。伊奥。将文件导入entity()方法。然而,有可能逃脱惩罚吗?

共有1个答案

鄢英哲
2023-03-14

是的,这应该有效。如果没有,在http://java.net/jira/browse/JERSEY提交一个错误

 类似资料:
  • DropWizard在REST的引擎盖下使用泽西。我正在尝试弄清楚如何为我的DropWizard应用程序将公开的RESTfulendpoint编写客户端。 为了这个例子,让我们假设我的DropWizard应用程序有一个< code>CarResource,它为CRUDding cars公开了几个简单的RESTfulendpoint: 因此,我认为结构化的API客户端将类似于: 但是我能找到的关于D

  • 在我的代码中,我试图反复构建一个客户端,并向远程endpoint发送一个输入流: 输入流包含消息的xml正文。我注意到在第一次迭代中。。。请求成功第二次迭代响应为400错误请求。。。第三个400错误请求。。。。等等。。。 如果我将输入流更改为字符串...获取真实的xml并用PUT方法发送它。 有什么区别?为什么它可以处理字符串而不能处理输入流?(似乎inputstream在第一次迭代后会发生变化)

  • 我正在尝试创建RESTful web服务,但无法使删除生效,我不确定问题在哪里。我认为问题在客户端项目中,但也可能在服务器项目的资源类中。 我有一个使用这种方法的学生道课,我不认为这是一个问题,因为它适用于其他项目。 我有一个StudentResource类,它是我从包含这段代码的模式中创建的RESTful资源 然后,我创建了一个java项目,并使用此方法创建了名为OneStudent的RESTf

  • 实际上,我正在使用Netty编写一个客户机-服务器程序,但我陷入了一个自上周以来无法解决的问题。 因为这是一个相当大的程序,我不能粘贴我所有的代码,但是,我开始使用这个例子从Netty的github(https://github.com/netty/netty/tree/4.1/example/src/main/java/io/netty/example/securechat) 在游戏的上下文中,

  • 我使用的是一个PHP RESTful API,它由使用jersey 2.21的Java桌面应用程序使用。

  • 我正在尝试重建一个与elasticsearch 2.4对话的插件,以便与elasticsearch 5配合使用。 代码来自:https://github.com/pentaho/pentaho-kettle/blob/master/plugins/elasticsearch-bulk-insert/src/org/pentaho/di/trans/steps/elasticsearchbulk/E