Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

java - Producing application/octet-stream and application/json

I have an endpoint that typically returns a document of type PDF, Word, etc. There is user input that goes along with this endpoint, however so I would like to validate it.

The trouble is, when I validate the input and want to return some sort of error JSON response, I end up getting errors similar to

Failed executing GET /foo/generateBar: NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: FooResponse of media type: application/octet-stream

What I am using on my endpoint is @Produces({"application/octet-stream", "application/json"})

Is there a way I can avoid this error by possibly returning both JSON and different file formats? My impression is that what the @Produces I was using was doing, however I'm probably thoroughly confused.

Additionally, I must note that I'm using window.open on the front-end side to call this endpoint.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

In Java and in javax.ws.rs.core.Response, you should try something like this in you headers:

               Response.status(response.getStatus())
                       .header("Accept", "application/json")
                       .header("Content-type", "application/json")
                       .entity(entity)
                       .build();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...