Absturz beim Lesen von Anhängern in Chunked and Compressed HTTP -Antwort mithilfe von Apache HTTP5 -ClientJava

Java-Forum
Anonymous
 Absturz beim Lesen von Anhängern in Chunked and Compressed HTTP -Antwort mithilfe von Apache HTTP5 -Client

Post by Anonymous »

Ich habe einen Java -REST -Service, der einen großen Datenstrom im Chunked Transfer -Codierungsformat sendet. In meiner Implementierung (um zu vereinfachen, generiere ich hier statische Daten) < /p>
@Override
public void writeTo(
Stream stream,
Class type,
Type genericType,
Annotation[] annotations,
MediaType mediaType,
MultivaluedMap httpHeaders,
OutputStream entityStream)
throws IOException {
httpServletResponse.setHeader("Transfer-Encoding","chunked");
final Map trailers = new HashMap();
httpServletResponse.setTrailerFields(()->trailers);
try (stream;
PrintWriter w = new PrintWriter(new OutputStreamWriter(entityStream,StandardCharsets.UTF_8))
) {

try {

IntStream.rangeClosed(1, 100)
.forEachOrdered(
record -> {
try {
w.write(STRING_DATA);

} catch (Exception e) {
throw new ProcessingException(new IOException(e));
}
})

} catch (Exception e) {
trailers.put("X-Stream-Error","TT xxxxxxxxxxxxxxxxxxxxxx");

}
}
}
< /code>
Mein Apache HTTP5 -Client folgt: < /p>
public static void main(String[] args) throws Exception{
TrustStrategy acceptingTrustStrategy = (cert, authType) -> true;
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,
NoopHostnameVerifier.INSTANCE);
Registry socketFactoryRegistry =
RegistryBuilder.create()
.register("https", sslsf)
.register("http", new PlainConnectionSocketFactory())
.build();

BasicHttpClientConnectionManager connectionManager =
new BasicHttpClientConnectionManager(socketFactoryRegistry);

try (CloseableHttpClient client =
HttpClients.custom() /*.setSSLSocketFactory(sslsf)*/
.setConnectionManager(connectionManager)

.build()) {

HttpPost request = new HttpPost(URL);
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
request.setHeader("TE","trailers");
request.setHeader("Trailer","X-Stream-Error");

List params = new ArrayList();

request.setEntity(new UrlEncodedFormEntity(params));
Supplier

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post