I wrote a simple class to test response reading entity method (if it works as I expect). But it didn't worked well.
When I launch my class I get following error at response.readEntity()
:
Exception in thread "main" java.lang.IllegalStateException: Method not supported on an outbound message. at org.glassfish.jersey.message.internal.OutboundJaxrsResponse.readEntity(OutboundJaxrsResponse.java:150)
And here's the code I wrote
public static void main(String[] args) {
List<Entity> representations = new ArrayList<>();
representations.add(new Entity("foo", "baz", false));
representations.add(new Entity("foo1", "baz1", true));
representations.add(new Entity("foo2", "baz2", false));
Response build = Response.ok(representations).build();
printEntitesFromResponse(build);
}
public static void printEntitesFromResponse(Response response) {
response
.readEntity(new GenericType<List<Entity>>() {})
.stream()
.forEach(entity -> System.out.println(entity));
}
What am I doing wrong?
To avoid the IllegalStateException in Java, it should be ensured that any method in code is not called at an illegal or inappropriate time. Calling the next() method moves the Iterator position to the next element.
Unchecked exception thrown when an attempt is made to reset a buffer when its mark is not defined. Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation.
public class IllegalStateException extends RuntimeException. Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation.
setProperty line. Because of this it will throw illegalStateException.
There are two types of Response
s, inbound and outbound, though they still use the same interface. Outbound is when you are sending a response from the server-side
Response response = Response.ok(entity).build();
Inbound is when you are receiving the response on the client-side.
Response response = webTarget.request().get();
The readEntity()
method is disabled on the server-side outbound response because you don't need it. It's only used when you need to de-serialize the response from the response stream. But there is none when it's outbound.
If you want the entity on the outbound response, just use Response#getEntity()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With