Ich versuche APPLICATION_FORM_URLENCODED
in einem MessageBodyReader
in Jersey zu lesen. Der Strom kehrt Null-Daten, wenn ich versuche, es zu lesen unter Verwendung eines BufferedReader
InputStream gibt null Daten in MessageBodyReader Jersey
Hier ist mein Code:
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public class EmployeeReader implements MessageBodyReader<Employee> {
@Override
public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations,
MediaType mediaType) {
return true;
}
@Override
public Employee readFrom(Class<Employee> type, Type genericType, Annotation[] annotations,
MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream)
throws IOException, WebApplicationException {
System.out.println(entityStream.available()); //Prints 0
BufferedReader br = new BufferedReader(new InputStreamReader(entityStream));
String data = br.readLine();
System.out.println("Stream Read:"+data);
//data is null here
.....
}
}
Ich kann sehen, dass die Daten von meiner Form als application/x-www-form-urlencoded
in der POST-Anforderung gesendet wird, aber ich kann es nicht in meinem MessageBodyReader
lesen.
Während Debuggen ich, dass der ByteChunk die unten Daten sehen hält:
POST /Employees/employee HTTP/1.1
host:localhost:80800
connection:keep-alivee
content-length:144
postman-token:cf873d98-3208-292c-8fc1-6da8138a31faa
cache-control:no-cachee
origin:chrome-extension://fhbjgbiflinjbdggehcddcbncdddomopp
user-agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.366
content-type:application/x-www-form-urlencodedd
accept:*/**
accept-encoding:gzip, deflate, brr
accept-language:en-US,en;q=0.88
id=3&name=Test
UPDATE
ich gerade herausgefunden, dass es eine Art Nebenwirkung von SpringBootServletInitializer
ist. Wenn Sie dies deaktivieren, funktioniert der obige Code einwandfrei.
Kann jemand helfen?
erreicht, nicht als Nachrichtentext. – EJP
@EJP Ich habe den gleichen Code für Jersey 2.5 in einer eigenständigen Jersey-Anwendung gesehen, funktioniert dieser Code nicht in Jersey 2.23 mit Spring Boot, Außerdem wie ich in der Frage erwähnt habe, kann ich die Daten sehen (Posted in der Frage) im ByteChunk des InputStreams in der Debug-Konsole ('id = 3 & name = Test') –