简体   繁体   中英

Unable to find a MessageBodyReader of content-type application/octet-stream

I'm struggling with an REST-Service written with JAX-RS.

I want to create and bind a client with the following code:

final String DEFAULT_RESOURCE_URL = "http://someURL:8180/";

    try {
        ResteasyClient client = new ResteasyClientBuilder().build().register(ClientResponseLoggingFilter.class);

        ResteasyWebTarget target = client.target(DEFAULT_RESOURCE_URL).path(
                "service/document/getdrawingbrowser/{documentId}/{documentType}/{partDocumentId}/{documentVersion}/{userName}");

        HashMap<String, Object> keyValuesMap = new HashMap<String, Object>();

        keyValuesMap.put("documentId", "xxxx");
        keyValuesMap.put("documentType", "yyy");
        keyValuesMap.put("partDocumentId", "000");
        keyValuesMap.put("documentVersion", "000");
        keyValuesMap.put("userName", "user");

        Builder responseBuilder = target.resolveTemplates(keyValuesMap).request();
        Response response = responseBuilder.get();


        if (response.getStatus() == 200) {

            byte[][] documents = response.readEntity(byte[][].class);
            for (int i = 0; i < documents.length; i++) {
                displayProperties(documents[i]);
            }
        } else {
            Object entity = response.getEntity();
            System.out.println(entity);
        }

    } catch (Throwable e) {
        e.printStackTrace();
    }
}

The REST-Service responds correctly I guess:

status: 200
date: Mon Sep 14 10:53:02 CEST 2015
last-modified: null
location: null
headers:
    Connection :keep-alive, 
    Content-Disposition :attachment; filename=someFile.pdf, 
    Content-Type :application/octet-stream, 
    Date :Mon, 14 Sep 2015 08:53:02 GMT, 
    Server :WildFly/8, 
    Transfer-Encoding :chunked, 
    X-Powered-By :Undertow/1, 
media-type: application

But in line 102 byte[][] documents = response.readEntity(byte[][].class); I'm getting an javax.ws.rs.ProcessingException which says:

javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type class [[B
at org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:39)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:73)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:50)
at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53)
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:248)
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:181)
at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:217)
at DocumentTest.main(DocumentTest.java:102)

I have tried several .jar files and some approaches from here and here , but sadly, none of them worked out...

Any ideas?

尝试将您的Content-Type更改为application/pdf

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM