"success", success && result.getResponse().getStatus() == Status.OK.getStatusCode()
@Override public void onHeaders(Response response) { if (logger.isTraceEnabled()) { // Convert to HttpHeaders to avoid "\n" logger.trace("XHR receive headers: " + toHttpHeaders(response.getHeaders())); } }
private static ClientResponse translateResponse(final ClientRequest jerseyRequest, final org.eclipse.jetty.client.api.Response jettyResponse, final NonBlockingInputStream entityStream) { final ClientResponse jerseyResponse = new ClientResponse(Statuses.from(jettyResponse.getStatus()), jerseyRequest); processResponseHeaders(jettyResponse.getHeaders(), jerseyResponse); jerseyResponse.setEntityStream(entityStream); return jerseyResponse; }
@Override public synchronized void onHeaders(Response response) { long length = response.getHeaders().getLongField(HttpHeader.CONTENT_LENGTH.asString()); if (length > maxLength) { response.abort(new ResponseTooLargeException()); } }
@Override public InputStream sendMessage(byte[] message) throws IOException { try { Request request = httpClient.newRequest(url) .method(HttpMethod.POST) .header(HttpHeader.CONTENT_TYPE, "application/octet-stream") .header(HttpHeader.ACCEPT_ENCODING, "gzip") .content(new BytesContentProvider(message)); addSessionCookie(request); InputStreamResponseListener listener = new InputStreamResponseListener(); request.send(listener); /** * Waits for the given timeout for the response to be available, then returns it. * The wait ends as soon as all the HTTP headers have been received, without waiting for the content. */ Response response = listener.get(readTimeout, TimeUnit.SECONDS); if (response.getStatus() >= 300) { throw new IOException( "Did not receive successful HTTP response: status code = " + response.getStatus() + ", status message = [" + response.getReason() + "]"); } return listener.getInputStream(); } catch (Exception e) { if (e instanceof InterruptedException) { Thread.currentThread().interrupt(); } throw new IOException("Exception while sending message", e); } }
Request request = response.getRequest(); HttpFields headers = response.getHeaders(); long length = headers.getLongField(HttpHeader.CONTENT_LENGTH.asString()); if (HttpMethod.HEAD.is(request.getMethod())) if (length > maxLength) response.abort(new IllegalArgumentException("Buffering capacity " + maxLength + " exceeded")); return;
public void isStatus(int status) { if (response.getStatus() != status) { addViolation(String.format("パス '%s' へのレスポンスコード %d が期待されていましたが %d でした", response.getRequest().getPath(), status, response.getStatus())); } }
protected void onServerResponseHeaders(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, Response serverResponse) for (HttpField field : serverResponse.getHeaders()) .append(" ").append(serverResponse.getReason()).append(System.lineSeparator()); for (String headerName : proxyResponse.getHeaderNames()) serverResponse, System.lineSeparator(), serverResponse.getHeaders().toString().trim(), System.lineSeparator(), builder);
public void isContentLength(long bytes) { String value = response.getHeaders().get("Content-Length"); if (value == null) { addViolation(String.format("リクエストパス %s に対して Content-Length がありませんでした", response.getRequest().getPath())); } else if (Long.parseLong(value) == bytes) { // ok } else { addViolation(String.format("パス %s に対するレスポンスのサイズが正しくありません: %s bytes", response.getRequest().getPath(), value)); } }
@Override public void onContent(Response response, ByteBuffer buffer) { while (true) { if (this.sockJsSession.isDisconnected()) { if (logger.isDebugEnabled()) { logger.debug("SockJS sockJsSession closed, closing response."); } response.abort(new SockJsException("Session closed.", this.sockJsSession.getId(), null)); return; } if (buffer.remaining() == 0) { break; } int b = buffer.get(); if (b == '\n') { handleFrame(); } else { this.outputStream.write(b); } } }
@Override public String getReason() { return response.getReason(); }
void send(Response response) { if (sent) { return; } sent = true; resp.setStatus(response.getStatus()); for (HttpField field : response.getHeaders()) { if (field.getName().toLowerCase().equals("location")) { String value = field.getValue(); if (value.startsWith(proxyUrl)) { String relLocation = value.substring(proxyUrl.length()); resp.addHeader(field.getName(), "http://localhost:" + port + proxyPath + relLocation); continue; } } resp.addHeader(field.getName(), field.getValue()); } } }
@Override public synchronized void onHeaders(Response response) { long length = response.getHeaders().getLongField(HttpHeader.CONTENT_LENGTH.asString()); if (length > maxLength) { response.abort(new ResponseTooLargeException()); } }
public boolean isStatus(int status) { if (response.getStatus() != status) { String msg = "パス '%s' へのレスポンスコード %d が期待されていましたが %d でした"; addViolation(String.format(msg, response.getRequest().getPath(), status, response.getStatus())); return wrap(false); } return wrap(true); }
public boolean isContentLength(long bytes) { String value = response.getHeaders().get("Content-Length"); if (value == null) { addViolation(String.format("リクエストパス %s に対して Content-Length がありませんでした", response.getRequest().getPath())); return wrap(false); } else if (Long.parseLong(value) == bytes) { return wrap(true); } else { addViolation(String.format("パス %s に対するレスポンスのサイズが正しくありません: %s bytes", response.getRequest().getPath(), value)); return wrap(false); } }
@Override public boolean abort(Throwable cause) { return response.abort(cause); }
@Override public String getStatusMessage() { return response.getReason(); }
@Override public boolean accept(Request request, Response response) { return response.getStatus() == HttpStatus.UNAUTHORIZED_401; }