io.vertx.core.http.HttpServerResponse#setChunked ( )源码实例Demo

下面列出了io.vertx.core.http.HttpServerResponse#setChunked ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: nexus-proxy   文件: NexusHttpProxy.java
/**
 * Proxies the specified HTTP request, enriching its headers with authentication information.
 *
 * @param userId  the ID of the user making the request.
 * @param origReq the original request (i.e., {@link RoutingContext#request()}.
 * @param origRes the original response (i.e., {@link RoutingContext#request()}.
 */
public void proxyUserRequest(final String userId,
                             final HttpServerRequest origReq,
                             final HttpServerResponse origRes) {
    final Handler<HttpClientResponse> proxiedResHandler = proxiedRes -> {
        origRes.setChunked(true);
        origRes.setStatusCode(proxiedRes.statusCode());
        origRes.headers().setAll(proxiedRes.headers());
        proxiedRes.handler(origRes::write);
        proxiedRes.endHandler(v -> origRes.end());
    };

    final HttpClientRequest proxiedReq;
    proxiedReq = httpClient.request(origReq.method(), port, host, origReq.uri(), proxiedResHandler);
    if(origReq.method() == HttpMethod.OTHER) {
        proxiedReq.setRawMethod(origReq.rawMethod());
    }
    proxiedReq.setChunked(true);
    proxiedReq.headers().add(X_FORWARDED_PROTO, getHeader(origReq, X_FORWARDED_PROTO, origReq.scheme()));
    proxiedReq.headers().add(X_FORWARDED_FOR, getHeader(origReq, X_FORWARDED_FOR, origReq.remoteAddress().host()));
    proxiedReq.headers().addAll(origReq.headers());
    injectRutHeader(proxiedReq, userId);
    origReq.handler(proxiedReq::write);
    origReq.endHandler(v -> proxiedReq.end());
}
 
源代码2 项目: okapi   文件: ProxyService.java
private void relayToResponse(HttpServerResponse hres,
                             HttpClientResponse res, ProxyContext pc) {
  if (pc.getHandlerRes() != 0) {
    hres.setStatusCode(pc.getHandlerRes());
    hres.headers().addAll(pc.getHandlerHeaders());
  } else if (pc.getAuthRes() != 0 && (pc.getAuthRes() < 200 || pc.getAuthRes() >= 300)) {
    hres.setStatusCode(pc.getAuthRes());
    hres.headers().addAll(pc.getAuthHeaders());
  } else {
    if (res != null) {
      hres.setStatusCode(res.statusCode());
      hres.headers().addAll(res.headers());
    }
  }
  sanitizeAuthHeaders(hres.headers());
  hres.headers().remove("Content-Length");
  hres.headers().remove("Transfer-Encoding");
  if (hres.getStatusCode() != 204) {
    hres.setChunked(true);
  }
}
 
源代码3 项目: raml-module-builder   文件: RestVerticle.java
void endRequestWithError(RoutingContext rc, int status, boolean chunked, String message, boolean[] isValid) {
  if (isValid[0]) {
    HttpServerResponse response = rc.response();
    if (!response.closed()) {
      response.setChunked(chunked);
      response.setStatusCode(status);
      if (status == 422) {
        response.putHeader("Content-type", SUPPORTED_CONTENT_TYPE_JSON_DEF);
      } else {
        response.putHeader("Content-type", SUPPORTED_CONTENT_TYPE_TEXT_DEF);
      }
      if (message != null) {
        response.write(message);
      } else {
        message = "";
      }
      response.end();
    }
    LogUtil.formatStatsLogMessage(rc.request().remoteAddress().toString(), rc.request().method().toString(),
      rc.request().version().toString(), response.getStatusCode(), -1, rc.response().bytesWritten(),
      rc.request().path(), rc.request().query(), response.getStatusMessage(), null, message);
  }
  // once we are here the call is not valid
  isValid[0] = false;
}
 
源代码4 项目: gravitee-gateway   文件: ApiManagementEndpoint.java
@Override
public void handle(RoutingContext ctx) {
    HttpServerResponse response = ctx.response();

    try {
        String sApi = ctx.request().getParam("apiId");
        Api api = apiManager.get(sApi);

        if (api == null) {
            response.setStatusCode(HttpStatusCode.NOT_FOUND_404);
        } else {
            response.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
            response.setStatusCode(HttpStatusCode.OK_200);
            response.setChunked(true);

            Json.prettyMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            response.write(Json.prettyMapper.writeValueAsString(api));
        }
    } catch (JsonProcessingException jpe) {
        response.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR_500);
        LOGGER.error("Unable to transform data object to JSON", jpe);
    }

    response.end();
}
 
源代码5 项目: gravitee-gateway   文件: ApisManagementEndpoint.java
@Override
public void handle(RoutingContext ctx) {
    HttpServerResponse response = ctx.response();
    response.setStatusCode(HttpStatusCode.OK_200);
    response.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
    response.setChunked(true);

    try {
        Collection<ListApiEntity> apis = apiManager.apis().stream().map(api -> {
            ListApiEntity entity = new ListApiEntity();
            entity.setId(api.getId());
            entity.setName(api.getName());
            entity.setVersion(api.getVersion());
            return entity;
        }).collect(Collectors.toList());

        Json.prettyMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        response.write(Json.prettyMapper.writeValueAsString(apis));
    } catch (JsonProcessingException jpe) {
        response.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR_500);
        LOGGER.error("Unable to transform data object to JSON", jpe);
    }

    response.end();
}
 
源代码6 项目: gravitee-gateway   文件: ApiKeysServiceHandler.java
@Override
public void handle(RoutingContext ctx) {
    HttpServerResponse response = ctx.response();
    response.setStatusCode(HttpStatusCode.OK_200);
    response.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
    response.setChunked(true);

    try {
        Json.prettyMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        response.write(Json.prettyMapper.writeValueAsString(new ExecutorStatistics()));
    } catch (JsonProcessingException jpe) {
        response.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR_500);
        LOGGER.error("Unable to transform data object to JSON", jpe);
    }

    response.end();
}
 
源代码7 项目: gravitee-gateway   文件: ApiKeyHandler.java
@Override
public void handle(RoutingContext ctx) {
    HttpServerResponse response = ctx.response();

    try {
        String sApi = ctx.request().getParam("apiId");
        ApiKeyRefresher apiKeyRefresher = apiKeyRefreshers.get(sApi);

        if (apiKeyRefresher == null) {
            response.setStatusCode(HttpStatusCode.NOT_FOUND_404);
        } else {
            response.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
            response.setStatusCode(HttpStatusCode.OK_200);
            response.setChunked(true);

            Json.prettyMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            response.write(Json.prettyMapper.writeValueAsString(new RefresherStatistics(apiKeyRefresher)));
        }
    } catch (JsonProcessingException jpe) {
        response.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR_500);
        LOGGER.error("Unable to transform data object to JSON", jpe);
    }

    response.end();
}
 
@Override
public void handle(RoutingContext ctx) {
    HttpServerResponse response = ctx.response();
    response.setStatusCode(HttpStatusCode.OK_200);
    response.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
    response.setChunked(true);

    try {
        Json.prettyMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        response.write(Json.prettyMapper.writeValueAsString(new ExecutorStatistics()));
    } catch (JsonProcessingException jpe) {
        response.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR_500);
        LOGGER.error("Unable to transform data object to JSON", jpe);
    }

    response.end();
}
 
@Override
public void handle(RoutingContext ctx) {
    HttpServerResponse response = ctx.response();

    try {
        String sApi = ctx.request().getParam("apiId");
        SubscriptionRefresher apiKeyRefresher = subscriptionRefreshers.get(sApi);

        if (apiKeyRefresher == null) {
            response.setStatusCode(HttpStatusCode.NOT_FOUND_404);
        } else {
            response.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
            response.setStatusCode(HttpStatusCode.OK_200);
            response.setChunked(true);

            Json.prettyMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            response.write(Json.prettyMapper.writeValueAsString(new RefresherStatistics(apiKeyRefresher)));
        }
    } catch (JsonProcessingException jpe) {
        response.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR_500);
        LOGGER.error("Unable to transform data object to JSON", jpe);
    }

    response.end();
}
 
源代码10 项目: vertx-sse   文件: SSEHandlerImpl.java
@Override
public void handle(RoutingContext context) {
	HttpServerRequest request = context.request();
	HttpServerResponse response = context.response();
	response.setChunked(true);
	SSEConnection connection = SSEConnection.create(context);
	String accept = request.getHeader("Accept");
	if (accept != null && !accept.contains("text/event-stream")) {
		connection.reject(406, "Not acceptable");
		return;
	}
	response.closeHandler(aVoid -> {
		closeHandlers.forEach(closeHandler -> closeHandler.handle(connection));
		connection.close();
	});
	response.headers().add("Content-Type", "text/event-stream");
	response.headers().add("Cache-Control", "no-cache");
	response.headers().add("Connection", "keep-alive");
	connectHandlers.forEach(handler -> handler.handle(connection));
	if (!connection.rejected()) {
		response.setStatusCode(200);
		response.setChunked(true);
		response.write(EMPTY_BUFFER);
	}
}
 
源代码11 项目: ethsigner   文件: HttpResponseFactory.java
public void create(
    final HttpServerRequest httpRequest, final int statusCode, final JsonRpcResponse body) {
  final HttpServerResponse response = httpRequest.response();

  response.putHeader("Content", JSON);
  response.setStatusCode(statusCode);
  response.setChunked(false);
  response.end(Json.encodeToBuffer(body));
}
 
源代码12 项目: sfs   文件: KeepAliveHttpServerResponse.java
public KeepAliveHttpServerResponse(VertxContext<Server> vertxContext, long timeout, TimeUnit timeUnit, HttpServerResponse delegate) {
    this.vertxContext = vertxContext;
    this.delegate = delegate;
    this.timeout = timeUnit.toMillis(timeout);
    delegate.setChunked(true);
    delegate.exceptionHandler(exception -> {
        ObservableFuture<Void> handler = RxHelper.observableFuture();
        stopKeepAlive(handler);
        handler.subscribe(new Subscriber<Void>() {
            @Override
            public void onCompleted() {
                handleThrowable(exception);
            }

            @Override
            public void onError(Throwable e) {
                handleThrowable(new CompositeException(exception, e));
            }

            @Override
            public void onNext(Void aVoid) {

            }
        });
    });
    startKeepAlive();
}
 
源代码13 项目: raml-module-builder   文件: PgUtil.java
private static <T> void streamGetResult(PostgresClientStreamResult<T> result,
  String element, HttpServerResponse response) {
  response.setStatusCode(200);
  response.setChunked(true);
  response.putHeader(HttpHeaders.CONTENT_TYPE, "application/json");
  response.write("{\n");
  response.write(String.format("  \"%s\": [%n", element));
  AtomicBoolean first = new AtomicBoolean(true);
  result.exceptionHandler(res -> {
    String message = res.getMessage();
    List<Diagnostic> diag = new ArrayList<>();
    diag.add(new Diagnostic().withCode("500").withMessage(message));
    result.resultInto().setDiagnostics(diag);
    streamTrailer(response, result.resultInto());
  });
  result.endHandler(res -> streamTrailer(response, result.resultInto()));
  result.handler(res -> {
    String itemString = null;
    try {
      itemString = OBJECT_MAPPER.writeValueAsString(res);
    } catch (JsonProcessingException ex) {
      logger.error(ex.getMessage(), ex);
      throw new IllegalArgumentException(ex.getCause());
    }
    if (first.get()) {
      first.set(false);
    } else {
      response.write(String.format(",%n"));
    }
    response.write(itemString);
  });
}
 
源代码14 项目: gravitee-gateway   文件: SyncHandler.java
@Override
public void handle(RoutingContext ctx) {
    HttpServerResponse response = ctx.response();
    JsonObject object = new JsonObject()
            .put("counter", syncManager.getCounter())
            .put("lastRefreshAt", syncManager.getLastRefreshAt());

    response.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
    response.setChunked(true);
    response.write(object.encodePrettily());
    response.setStatusCode(HttpStatusCode.OK_200);
    response.end();
}
 
源代码15 项目: vertx-web   文件: XhrTransport.java
final void beforeSend() {
  if (log.isTraceEnabled()) log.trace("XHR sending frame");
  if (!headersWritten) {
    HttpServerResponse resp = rc.response();
    resp.putHeader(HttpHeaders.CONTENT_TYPE, "application/javascript; charset=UTF-8");
    setJSESSIONID(options, rc);
    setCORS(rc);
    if (rc.request().version() != HttpVersion.HTTP_1_0) {
      resp.setChunked(true);
    }
    // NOTE that this is streaming!!!
    // Client are not expecting to see Content-Length as we don't know it's value
    headersWritten = true;
  }
}
 
源代码16 项目: apiman   文件: HttpPolicyAdapter.java
private void handleError(ApiRequest apimanRequest, Throwable error, HttpServerResponse vertxResponse) {
    vertxResponse.setChunked(true);
    policyErrorWriter.write(apimanRequest, error, new IApiClientResponse() {

        @Override
        public void write(StringBuffer buffer) {
            vertxRequest.resume();
            vertxResponse.end(buffer.toString());
        }

        @Override
        public void write(StringBuilder builder) {
            vertxRequest.resume();
            vertxResponse.end(builder.toString());
        }

        @Override
        public void write(String body) {
            vertxRequest.resume();
            vertxResponse.end(body);
        }

        @Override
        public void setStatusCode(int code) {
            vertxResponse.setStatusCode(code);
        }

        @Override
        public void setHeader(String headerName, String headerValue) {
            vertxResponse.putHeader(headerName, headerValue);
        }
    });
}
 
源代码17 项目: apiman   文件: HttpPolicyAdapter.java
private void handlePolicyFailure(ApiRequest apimanRequest, PolicyFailure policyFailure, HttpServerResponse vertxResponse) {
    vertxResponse.setChunked(true);
    policyFailureWriter.write(apimanRequest, policyFailure, new IApiClientResponse() {

        @Override
        public void write(StringBuffer buffer) {
            vertxRequest.resume();
            vertxResponse.end(buffer.toString());
        }

        @Override
        public void write(StringBuilder builder) {
            vertxRequest.resume();
            vertxResponse.end(builder.toString());
        }

        @Override
        public void write(String body) {
            vertxRequest.resume();
            vertxResponse.end(body);
        }

        @Override
        public void setStatusCode(int code) {
            vertxResponse.setStatusCode(code);
        }

        @Override
        public void setHeader(String headerName, String headerValue) {
            vertxResponse.putHeader(headerName, headerValue);
        }
    });
}
 
static Object toHttpResponse(HttpServerResponse response, Message message, HeaderFilterStrategy headerFilterStrategy) {
    final Exchange exchange = message.getExchange();

    final int code = determineResponseCode(exchange, message.getBody());
    response.setStatusCode(code);

    final TypeConverter tc = exchange.getContext().getTypeConverter();

    // copy headers from Message to Response
    if (headerFilterStrategy != null) {
        for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) {
            final String key = entry.getKey();
            final Object value = entry.getValue();
            // use an iterator as there can be multiple values. (must not use a delimiter)
            final Iterator<?> it = ObjectHelper.createIterator(value, null);
            String firstValue = null;
            List<String> values = null;
            while (it.hasNext()) {
                final String headerValue = tc.convertTo(String.class, it.next());
                if (headerValue != null
                        && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, exchange)) {
                    if (firstValue == null) {
                        firstValue = headerValue;
                    } else {
                        if (values == null) {
                            values = new ArrayList<String>();
                            values.add(firstValue);
                        }
                        values.add(headerValue);
                    }
                }
            }
            if (values != null) {
                response.putHeader(key, values);
            } else if (firstValue != null) {
                response.putHeader(key, firstValue);
            }
        }
    }

    Object body = message.getBody();
    final Exception exception = exchange.getException();

    if (exception != null) {
        // we failed due an exception so print it as plain text
        final StringWriter sw = new StringWriter();
        final PrintWriter pw = new PrintWriter(sw);
        exception.printStackTrace(pw);

        // the body should then be the stacktrace
        body = ByteBuffer.wrap(sw.toString().getBytes(StandardCharsets.UTF_8));
        // force content type to be text/plain as that is what the stacktrace is
        message.setHeader(Exchange.CONTENT_TYPE, "text/plain; charset=utf-8");

        // and mark the exception as failure handled, as we handled it by returning it as the response
        ExchangeHelper.setFailureHandled(exchange);
    }

    // set the content-length if it can be determined, or chunked encoding
    final Integer length = determineContentLength(exchange, body);
    if (length != null) {
        response.putHeader("Content-Length", String.valueOf(length));
    } else {
        response.setChunked(true);
    }

    // set the content type in the response.
    final String contentType = MessageHelper.getContentType(message);
    if (contentType != null) {
        // set content-type
        response.putHeader("Content-Type", contentType);
    }
    return body;
}
 
源代码19 项目: nubes   文件: MultipleFiltersController.java
@BeforeFilter(1)
public void before2(HttpServerResponse response) {
	response.setChunked(true);
	response.write("before1;");
}