for (Map.Entry<String, String> header : response.getHeaders().entries()) { servletResponse.setHeader(header.getKey(), header.getValue());
public static HttpClientRequest<ByteBuf> createHttpClientRequest(HttpRequestMessage zuulReq) { HttpClientRequest<ByteBuf> clientReq = HttpClientRequest.create(HttpMethod.valueOf(zuulReq.getMethod().toUpperCase()), zuulReq.getPathAndQuery()); for (Map.Entry<String, String> entry : zuulReq.getHeaders().entries()) { // TODO - should we be filtering headers here like we do when using Ribbon? clientReq = clientReq.withHeader(entry.getKey(), entry.getValue()); } if (zuulReq.getBodyStream() != null) { clientReq = clientReq.withContentSource(zuulReq.getBodyStream()); } return clientReq; }
@Override public Observable<ZuulMessage> write(ZuulMessage msg, HttpServerResponse nativeResponse) { HttpResponseMessage zuulResp = (HttpResponseMessage) msg; // Set the response status code. nativeResponse.setStatus(HttpResponseStatus.valueOf(zuulResp.getStatus())); // Now set all of the response headers - note this is a multi-set in keeping with HTTP semantics for (Map.Entry<String, String> entry : zuulResp.getHeaders().entries()) { nativeResponse.getHeaders().add(entry.getKey(), entry.getValue()); } // Write response body stream as received. Observable<ZuulMessage> chain; Observable<ByteBuf> bodyStream = zuulResp.getBodyStream(); if (bodyStream != null) { chain = bodyStream .doOnNext(bb -> nativeResponse.writeBytesAndFlush(bb)) .ignoreElements() .doOnCompleted(() -> nativeResponse.close()) .map(bb -> msg); } else { chain = Observable.just(msg); } return chain; }
for (Map.Entry<String, String> entry : headers.entries()) { if (ProxyUtils.isValidRequestHeader(entry.getKey())) { builder.header(entry.getKey(), entry.getValue());