use of io.vertx.reactivex.core.buffer.Buffer in project vertx-examples by vert-x3.
the class Client method start.
@Override
public void start() throws Exception {
HttpClient client = vertx.createHttpClient();
HttpClientRequest req = client.request(HttpMethod.GET, 8080, "localhost", "/");
req.toFlowable().flatMap(resp -> {
if (resp.statusCode() != 200) {
throw new RuntimeException("Wrong status code " + resp.statusCode());
}
return Flowable.just(Buffer.buffer()).mergeWith(resp.toFlowable());
}).reduce(Buffer::appendBuffer).map(buffer -> buffer.toString("UTF-8")).subscribe(data -> System.out.println("Server content " + data));
// End request
req.end();
}
use of io.vertx.reactivex.core.buffer.Buffer in project knotx by Cognifide.
the class HttpClientFacade method callService.
private Single<HttpResponse<Buffer>> callService(Pair<ClientRequest, ServiceMetadata> serviceData, HttpMethod method) {
final Single<HttpResponse<Buffer>> httpResponse;
final ClientRequest serviceRequest = serviceData.getLeft();
final ServiceMetadata serviceMetadata = serviceData.getRight();
final HttpRequest<Buffer> request = webClient.request(method, serviceMetadata.getPort(), serviceMetadata.getDomain(), serviceRequest.getPath());
updateRequestQueryParams(request, serviceMetadata);
updateRequestHeaders(request, serviceRequest, serviceMetadata);
overrideRequestHeaders(request, serviceMetadata);
if (!serviceRequest.getFormAttributes().isEmpty()) {
httpResponse = request.rxSendForm(serviceRequest.getFormAttributes());
} else {
httpResponse = request.rxSend();
}
return httpResponse;
}
use of io.vertx.reactivex.core.buffer.Buffer in project knotx by Cognifide.
the class HttpClientFacade method updateRequestHeaders.
private void updateRequestHeaders(HttpRequest<Buffer> request, ClientRequest serviceRequest, ServiceMetadata serviceMetadata) {
MultiMap filteredHeaders = getFilteredHeaders(serviceRequest.getHeaders(), serviceMetadata.getAllowedRequestHeaderPatterns());
filteredHeaders.names().forEach(headerName -> filteredHeaders.getAll(headerName).forEach(value -> request.headers().add(headerName, value)));
if (customRequestHeader.containsKey("name") && customRequestHeader.containsKey("value")) {
request.headers().set(customRequestHeader.getString("name"), customRequestHeader.getString("value"));
}
}
use of io.vertx.reactivex.core.buffer.Buffer in project NetDiscovery by fengzhizi715.
the class VertxDownloader method download.
public Maybe<Response> download(Request request) {
WebClientOptions options = initWebClientOptions(request);
webClient = WebClient.create(vertx, options);
HttpRequest<Buffer> httpRequest = null;
if (request.getHttpMethod() == HttpMethod.GET) {
if ("http".equals(request.getUrlParser().getProtocol())) {
httpRequest = webClient.getAbs(request.getUrl());
} else if ("https".equals(request.getUrlParser().getProtocol())) {
httpRequest = webClient.get(443, request.getUrlParser().getHost(), Preconditions.isNotBlank(request.getUrlParser().getQuery()) ? request.getUrlParser().getPath() + "?" + request.getUrlParser().getQuery() : request.getUrlParser().getPath()).ssl(true);
}
} else if (request.getHttpMethod() == HttpMethod.POST) {
if ("http".equals(request.getUrlParser().getProtocol())) {
httpRequest = webClient.postAbs(request.getUrl());
} else if ("https".equals(request.getUrlParser().getProtocol())) {
httpRequest = webClient.post(443, request.getUrlParser().getHost(), Preconditions.isNotBlank(request.getUrlParser().getQuery()) ? request.getUrlParser().getPath() + "?" + request.getUrlParser().getQuery() : request.getUrlParser().getPath()).ssl(true);
}
}
// 设置请求头header
if (Preconditions.isNotBlank(header)) {
for (Map.Entry<String, String> entry : header.entrySet()) {
httpRequest.putHeader(entry.getKey(), entry.getValue());
}
}
// 针对post请求,需要对header添加一些信息
if (request.getHttpMethod() == HttpMethod.POST) {
if (Preconditions.isNotBlank(request.getHttpRequestBody()) && Preconditions.isNotBlank(request.getHttpRequestBody().getContentType())) {
httpRequest.putHeader("Content-type", request.getHttpRequestBody().getContentType());
}
}
String charset = null;
if (Preconditions.isNotBlank(request.getCharset())) {
charset = request.getCharset();
} else {
charset = Constant.UTF_8;
}
HttpRequest<String> stringHttpRequest = httpRequest.as(BodyCodec.string(charset));
Single<HttpResponse<String>> httpResponseSingle = null;
if (request.getHttpMethod() == HttpMethod.GET) {
httpResponseSingle = stringHttpRequest.rxSend();
} else if (request.getHttpMethod() == HttpMethod.POST) {
if (Preconditions.isNotBlank(request.getHttpRequestBody())) {
Buffer buffer = Buffer.buffer();
buffer.getDelegate().appendBytes(request.getHttpRequestBody().getBody());
httpResponseSingle = stringHttpRequest.rxSendBuffer(buffer);
} else {
httpResponseSingle = stringHttpRequest.rxSend();
}
}
return httpResponseSingle.toMaybe().map(new Function<HttpResponse<String>, Response>() {
@Override
public Response apply(HttpResponse<String> stringHttpResponse) throws Exception {
String html = stringHttpResponse.body();
Response response = new Response();
response.setContent(html.getBytes());
response.setStatusCode(stringHttpResponse.statusCode());
response.setContentType(stringHttpResponse.getHeader("Content-Type"));
if (request.isSaveCookie()) {
// save cookies
if (Preconditions.isNotBlank(stringHttpResponse.cookies())) {
CookieGroup cookieGroup = CookieManager.getInsatance().getCookieGroup(request.getUrlParser().getHost());
if (cookieGroup == null) {
cookieGroup = new CookieGroup(request.getUrlParser().getHost());
for (String cookieStr : stringHttpResponse.cookies()) {
String[] segs = cookieStr.split(";");
if (Preconditions.isNotBlank(segs)) {
for (String seg : segs) {
String[] pairs = seg.trim().split("\\=");
if (pairs.length == 2) {
cookieSet.add(new Cookie(pairs[0], pairs[1]));
}
}
}
}
cookieGroup.putAllCookies(cookieSet);
CookieManager.getInsatance().addCookieGroup(cookieGroup);
} else {
for (String cookieStr : stringHttpResponse.cookies()) {
String[] segs = cookieStr.split(";");
if (Preconditions.isNotBlank(segs)) {
for (String seg : segs) {
String[] pairs = seg.trim().split("\\=");
if (pairs.length == 2) {
cookieSet.add(new Cookie(pairs[0], pairs[1]));
}
}
}
}
cookieGroup.putAllCookies(cookieSet);
}
}
}
return response;
}
});
}
Aggregations