我正在使用jersey-client v1.18.1
我需要发出2个顺序请求,其中第一个请求有一个InputStream,然后必须将相同的 InputStream 传递给第二个请求(例如,有点像代理)。然后,第二个请求将InputStream写入磁盘,并将第二个请求写入文件的磁盘上的位置的完全限定路径发送回第一个请求。
以下代码段概述了我尝试过的内容,但无法正常运行。我目前收到错误:
“com.sun.jersey.api.client.ClientHandlerException:找不到Java类型的消息正文编写器,类org.seleniumhq.jetty9.server.HttpInputOverHTTP,并且找不到MIME媒体类型application / octet-stream”
我相信我的项目中有MIME和邮件正文编写器的所有正确的Maven依赖项。
来自主机1的第一个请求转到主机2
Client client = Client.create();
client.resource(uri_for_request_1)
client.path(“request_1_servlet");
client.queryParam(“uri_for_request_2", uri_for_request_2);
client.queryParam("targetFilename", targetFilename);
ClientResponse response = client.accept(MediaType.APPLICATION_JSON).entity(inputStream).post(ClientResponse.class);
发送到主机2的第二个请求转到主机3
Client client = Client.create();
client.resource(request.getParamater(“uri_for_request_2"))
client.path(“request_2_servlet");
client.queryParam("targetFilename", request.getParamater(“targetFilename");
ClientResponse response = client.accept(MediaType.APPLICATION_JSON).entity(request.getInputStream()).post(ClientResponse.class);
主持人3 将InputStream写入文件并发送回Host 2完全限定的路径。
主持人2 返回主机1完全限定路径。
我尝试过后调用的变种: client.accept(MediaType.APPLICATION_JSON).TYPE(MediaType.APPLICATION_OCTET_STREAM).entity(的inputStream).POST(ClientResponse.class); client.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_OCTET_STREAM).post(ClientResponse.class,inputStream);
我可以确认第一个请求是在主机1上进行并到达主机2.这是主机2上的第二个请求在post()调用期间失败。