gpt4 book ai didi

java - 如何使用 Jersey 客户端从获取响应中二进制数据?

转载 作者:行者123 更新时间:2023-12-01 18:05:28 25 4
gpt4 key购买 nike

我正在尝试使用 Jersey 客户端调用休息电话。根据 api 文档,请求以二进制数据形式返回图像。当我使用 postman 进行其余的 Get 调用时,我可以返回实际图像(假设 postman 将二进制文件转换回图像/png)。这是从 postman 返回的以下 header 。

enter image description here

我尝试在java中使用jersey客户端来完成其余的工作。这是我的代码:

private Client client = ClientBuilder.newClient( new ClientConfig().register(LoggingFilter.class).register(MultiPartFeature.class));
private WebTarget myServer;

myServer= client.target(baseURL);

public void restGetImage(String requestURL, String headers) {

BufferedReader br = null;
StringBuilder sb = new StringBuilder();

String line;

MultivaluedMap<String, Object> userHeaders = storeHeadersInMap(headers);

WebTarget target = getWebTarget().path(requestURL);

Response response = target.request(MediaType.APPLICATION_OCTET_STREAM)
.headers(userHeaders)
.get();

System.out.println("Reuqest URL: " + session.get("baseurl") + requestURL);
int responseCode = response.getStatus();
InputStream inputStream = response.readEntity(InputStream.class);

String contentType = response.getHeaderString("Content-Type");

// br = new BufferedReader(new InputStreamReader(inputStream));
//
// try {
// while((line = br.readLine()) != null) {
// sb.append(line);
// }
//
// br.close(); //close buffered reader
//
// } catch (IOException e) {
// e.printStackTrace();
//
// }
//
// RestResponse data = new RestResponse(responseCode, sb.toString(), contentType);
// data.setResponseHeader(response.getHeaders());
//
// System.out.println("response code: " + responseCode);
// System.out.println("response Content-Type: " + contentType);
// System.out.println("Response body: " + sb.toString());

// return data;
}

请原谅所有评论,因为我仍在测试代码。基本上,代码返回 200 响应状态,但是当它无法读取响应时。它在 InputStream inputStream = response.readEntity(InputStrean.class) 处引发异常。

 Apr 22, 2016 11:37:29 AM         
org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderIn
terceptor aroundReadFrom
SEVERE: MessageBodyReader not found for media type=image/png, type=class
com.itextpdf.text.pdf.codec.Base64$InputStream, genericType=class
com.itextpdf.text.pdf.codec.Base64$InputStream.

我的目标是能够读取二进制响应数据。任何见解都会受到赞赏。谢谢。

最佳答案

SEVERE: MessageBodyReader not found for media type=image/png, type=class
com.itextpdf.text.pdf.codec.Base64$InputStream, genericType=class
com.itextpdf.text.pdf.codec.Base64$InputStream.

您使用了错误的InputStream类。您应该使用java.io.InputStream 。检查并修复您的导入。

关于java - 如何使用 Jersey 客户端从获取响应中二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com