下面列出了io.vertx.core.http.HttpServerResponse#putHeader ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@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 {
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();
}
@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();
}
@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();
}
/**
* 该方法实现了支付宝手机网页的支付功能;
* 方法将调用支付宝支付页面需要用到的数据拼接和设置好,然后,写到响应中,前台会自动弹出支付宝支付页面;
* 其中,支付金额要求大于0.01,并且小于100000000,需要调用者自己检查该值再传进来,否则页面会报获取不到订单信息错误;
*
* @param aliAccountInfo 保存了支付宝账户的信息,包括appId、用户私钥、支付宝公钥和回调地址等,具体参考AliAccountInfo类的属性说明
* @param payBizContent 保存了订单信息,包括本地订单号、金额等,具体参考BizContent类的属性说明
* Create by quandong
*/
public static void wapPay(AliAccountInfo aliAccountInfo, PayBizContent payBizContent, HttpServerResponse httpResponse) throws IOException {
AlipayClient alipayClient = AliPayCliFactory.getAlipayClient(aliAccountInfo); // 从客户端工厂中获取AlipayClient
AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest(); // 创建API对应的request
String form = "";
alipayRequest.setReturnUrl(aliAccountInfo.getReturnUrl()); // 设置回跳地址
alipayRequest.setNotifyUrl(aliAccountInfo.getNotifyUrl()); // 设置通知地址
alipayRequest.setBizContent(payBizContent.toString()); // 填充业务参数
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); // 调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
httpResponse.putHeader("Content-Type", "text/html;charset=" + AlipayConstants.CHARSET_UTF8); // 设置文本类型及编码
httpResponse.end(form); // 直接将完整的表单html输出到页面
}
/**
* Streaming GET with query. This produces a HTTP with JSON content with
* properties {@code totalRecords}, {@code resultInfo} and custom element.
* The custom element is array type which POJO that is of type clazz.
*
* @param <T>
* @param table
* @param clazz
* @param cql
* @param offset
* @param limit
* @param facets
* @param element
* @param queryTimeout query timeout in milliseconds, or 0 for no timeout
* @param okapiHeaders
* @param vertxContext
* @param routingContext
*/
@SuppressWarnings({"squid:S107"}) // Method has >7 parameters
public static <T> void streamGet(String table, Class<T> clazz,
String cql, int offset, int limit, List<String> facets,
String element, int queryTimeout, RoutingContext routingContext, Map<String, String> okapiHeaders,
Context vertxContext) {
HttpServerResponse response = routingContext.response();
try {
List<FacetField> facetList = FacetManager.convertFacetStrings2FacetFields(facets, JSON_COLUMN);
CQLWrapper wrapper = new CQLWrapper(new CQL2PgJSON(table + "." + JSON_COLUMN), cql, limit, offset);
streamGet(table, clazz, wrapper, facetList, element, queryTimeout, routingContext, okapiHeaders,
vertxContext);
} catch (Exception e) {
logger.error(e.getMessage(), e);
response.setStatusCode(500);
response.putHeader(HttpHeaders.CONTENT_TYPE, "text/plain");
response.end(e.toString());
}
}
@Override
public void handle(final RoutingContext context) {
final HttpServerRequest request = context.request();
final HttpServerResponse response = context.response();
response.putHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
response.putHeader("Pragma", "no-cache");
if (request.params().contains("sid") && request.params().contains("wcnt") && request.params().contains("data")) {
final UUID sid = UUID.fromString(request.params().get("sid"));
final byte[] data = Base64.getUrlDecoder().decode(request.params().get("data"));
response.setStatusCode(200);
final LocalMap<String, Session> map = vertx.sharedData().getLocalMap(Constants.SESSIONS);
final Session session = map.get(sid.toString());
if (session == null) {
response.setStatusCode(410);
response.end();
return;
}
session.setWrite_count(Integer.parseInt(request.params().get("wcnt")));
final Buffer message = Buffer.buffer();
message.appendBytes(data);
vertx.eventBus().publish(session.getHandler(), message);
response.end();
} else {
response.setStatusCode(410);
response.end();
}
}
private void addCredentialsAndOriginHeader(HttpServerResponse response, String origin) {
if (allowCredentials) {
response.putHeader(ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
// Must be exact origin (not '*') in case of credentials
response.putHeader(ACCESS_CONTROL_ALLOW_ORIGIN, origin);
} else {
// Can be '*' too
response.putHeader(ACCESS_CONTROL_ALLOW_ORIGIN, getAllowedOrigin(origin));
}
}
@Override
public void handle(final RoutingContext context) {
final HttpServerRequest request = context.request();
final HttpServerResponse response = context.response();
response.putHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
response.putHeader("Pragma", "no-cache");
if (request.params().contains("sid") && request.params().contains("rcnt")) {
final UUID sid = UUID.fromString(request.params().get("sid"));
final LocalMap<String, Session> map = vertx.sharedData().getLocalMap(Constants.SESSIONS);
final Session session = map.get(sid.toString());
if (session == null) {
logger.warn("could not find valid session for " + sid);
response.setStatusCode(410);
response.end();
return;
}
session.setRead_count(Integer.parseInt(request.params().get("rcnt")));
final TransferQueue queue;
try {
queue = QueueFactory.getQueue(sid.toString());
} catch (NoSuchQueueException ex) {
logger.warn(ex, ex.fillInStackTrace());
response.setStatusCode(410);
response.end();
return;
}
final Buffer buffer = queue.poll();
if (buffer == null) {
queue.addObserver(new TransferObserver(session, request));
} else {
final String encodedBytes = Base64.getUrlEncoder().encodeToString(buffer.getBytes());
response.setStatusCode(200);
response.end(encodedBytes);
}
} else {
response.setStatusCode(410);
response.end();
}
}
protected void onFailure(RoutingContext context) {
LOGGER.error("edge server failed.", context.failure());
HttpServerResponse response = context.response();
if (response.closed() || response.ended()) {
return;
}
if (context.failure() instanceof InvocationException) {
InvocationException exception = (InvocationException) context.failure();
response.setStatusCode(exception.getStatusCode());
response.setStatusMessage(exception.getReasonPhrase());
if (null == exception.getErrorData()) {
response.end();
return;
}
String responseBody;
try {
responseBody = RestObjectMapperFactory.getRestObjectMapper().writeValueAsString(exception.getErrorData());
response.putHeader("Content-Type", MediaType.APPLICATION_JSON);
} catch (JsonProcessingException e) {
responseBody = exception.getErrorData().toString();
response.putHeader("Content-Type", MediaType.TEXT_PLAIN);
}
response.end(responseBody);
} else {
response.setStatusCode(Status.BAD_GATEWAY.getStatusCode());
response.setStatusMessage(Status.BAD_GATEWAY.getReasonPhrase());
response.end();
}
}
private static void addHeaders(Response jaxrsResponse, HttpServerResponse response) {
if (jaxrsResponse.getMetadata() != null) {
List<Object> cookies = jaxrsResponse.getMetadata().get(HttpHeaders.SET_COOKIE.toString());
if (cookies != null) {
Iterator<Object> it = cookies.iterator();
while (it.hasNext()) {
Object next = it.next();
if (next instanceof NewCookie) {
NewCookie cookie = (NewCookie) next;
response.putHeader(HttpHeaders.SET_COOKIE, cookie.toString());
}
}
if (cookies.size() < 1) {
jaxrsResponse.getMetadata().remove(HttpHeaders.SET_COOKIE.toString());
}
}
}
if (jaxrsResponse.getMetadata() != null && jaxrsResponse.getMetadata().size() > 0) {
for (String name : jaxrsResponse.getMetadata().keySet()) {
List<Object> meta = jaxrsResponse.getMetadata().get(name);
if (meta != null && meta.size() > 0) {
for (Object item : meta) {
if (item != null) {
response.putHeader(name, item.toString());
}
}
}
}
}
}
private void sendFile(RoutingContext routingContext, String fileName, File saneFile) {
HttpServerResponse response = routingContext.response();
response.putHeader("Content-Description", "File Transfer");
response.putHeader("Content-Type", "application/octet-stream");
response.putHeader(
"Content-Disposition", "attachment; filename=" + fileName); // @TODO: don't trust this name?
response.putHeader("Content-Transfer-Encoding", "binary");
response.putHeader("Expires", "0");
response.putHeader("Pragma", "Public");
response.putHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.putHeader("Content-Length", "" + saneFile.length());
response.sendFile(saneFile.getAbsolutePath());
}
@Override
public Holder2<SfsRequest, Optional<A>> call(Holder2<SfsRequest, Optional<A>> input) {
HttpServerResponse httpServerResponse = input.value0().response();
Optional<A> oBlob = input.value1();
if (oBlob.isPresent()) {
A blob = oBlob.get();
long offset = blob.getOffset();
httpServerResponse
.putHeader(X_CONTENT_OFFSET, valueOf(offset));
}
return input;
}
@GET("/instrumented*")
public void instrumentAsset(HttpServerResponse response, RoutingContext context) {
response.putHeader(INSTRUMENT_HEADER, "yes");
context.next(); // in this case we HAVE TO since we want to delegate to another handler (out of Nubes scope)
}
@GET("/after")
public void handleRedirect(HttpServerResponse response) {
response.putHeader("afterredirect-method", "true");
}
static void setHeaders(HttpServerResponse resp, String contentType) {
resp.putHeader("Content-type", contentType);
setCorsHeaders(resp);
}
private void checkHealth(final RoutingContext routingContext) {
HttpServerResponse response = routingContext.request().response();
response.setStatusCode(200);
response.putHeader("content-type", "application/json");
response.end();
}
static void setCorsHeaders(HttpServerResponse resp) {
// Support cross-site HTTP requests - we want to support external HTML5 clients
// See https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
resp.putHeader("Access-Control-Allow-Origin", "*");
resp.putHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
}
@GET("/client/permanent")
@Redirect(value = REDIRECT_LOCATION, code = 301)
public void redirectMePermanently(HttpServerResponse response) {
response.putHeader("X-Custom-Header", "method-called");
}
@GET("/dynamicValueWithParamName")
public void getDynamicValueWithParamName(HttpServerResponse response, @VertxLocalMap LocalMap<String, String> someMap, @Param String key) {
response.putHeader("X-Map-Value", someMap.get(key));
response.end();
}