Java源码示例:com.google.common.net.HttpHeaders

示例1
@Test
public void testProxyOnPerdu() throws Exception {
    ProxyFilter filter = new ProxyFilter() {

        @Override
        protected String getProxyTo() {
            return "http://perdu.com";
        }
    };

    Route route = mock(Route.class);
    RequestContext rc = mock(RequestContext.class);
    FakeContext context = new FakeContext();
    context.setPath("/").setHeader(HttpHeaders.CONNECTION, "keep-alive");

    FakeRequest request = new FakeRequest(context).method(HttpMethod.GET).uri("/");

    when(rc.context()).thenReturn(context);
    when(rc.request()).thenReturn(request);
    Result result = ((AsyncResult) filter.call(route, rc)).callable().call();
    assertThat(result).isNotNull();
    assertThat(result.getStatusCode()).isEqualTo(Status.OK);
    assertThat(streamToString(result)).contains("Pas de panique");
    assertThat(result.getHeaders().get(HeaderNames.CONTENT_TYPE)).isEqualTo(MimeTypes.HTML);
}
 
示例2
/**
 * Get content type from headers
 *
 * */
protected String getContentType() {
  // Content_Type cannot have multiple, commas-separated values, so this is safe.
  Iterator<String> header = _headers.get(HttpHeaders.CONTENT_TYPE).iterator();
  if (!header.hasNext()) {
    return DEFAULT_CONTENT_TYPE;
  } else {
    return MediaType.parse(header.next()).withoutParameters().toString();
  }
}
 
示例3
private boolean loginValid(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
	HttpSession session = httpServletRequest.getSession();
	String uid = httpServletRequest.getParameter(CommonParameter.USER_ID);
	String token = (String) session.getAttribute(uid);
	String url=httpServletRequest.getRequestURI();
	HashSet<String> canAccessUrls = Sets.newHashSet("/sepp/user/list_domain", "/", "/sepp/", "/sepp/user/list_domain",
			"/sepp/user/ldap_auth","/sepp/myHandler");
	if (canAccessUrls.contains(url) || url.contains("/user")) {
		return true;
	}
	if(StringUtils.isBlank(token))
	{
		httpServletResponse.setHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE);
		String errorMessage = LOGIN_VALID_ERROR_MESSAGE;
		httpServletResponse.getWriter().write(errorMessage);
		return false;
	}
	return true;
}
 
示例4
@Test
public void givenResourceWasRetrievedThenModified_whenRetrievingAgainWithEtagUsingCustomEtagEndpoint_thenResourceIsReturned() throws Exception {
 // Given
    String createdResourceUri = this.mvc.perform(post(FOOS_ENDPOINT).contentType(MediaType.APPLICATION_JSON)
        .content(createFooJson()))
        .andExpect(status().isCreated())
        .andReturn()
        .getResponse()
        .getHeader(HttpHeaders.LOCATION);
    ResultActions findOneResponse = this.mvc
        .perform(get(createdResourceUri + CUSTOM_ETAG_ENDPOINT_SUFFIX).contentType(MediaType.APPLICATION_JSON));
    String etag = findOneResponse.andReturn().getResponse().getHeader(HttpHeaders.ETAG);
    Foo createdFoo = deserializeFoo(findOneResponse.andReturn().getResponse().getContentAsString());
    createdFoo.setName("updated name");
    this.mvc
    .perform(put(createdResourceUri).contentType(MediaType.APPLICATION_JSON).content(serializeFoo(createdFoo)));

    // When
    ResultActions result = this.mvc
        .perform(get(createdResourceUri + CUSTOM_ETAG_ENDPOINT_SUFFIX).contentType(MediaType.APPLICATION_JSON).header(HttpHeaders.IF_NONE_MATCH, etag));

    // Then
    result.andExpect(status().isOk())
    .andExpect(header().string(HttpHeaders.ETAG, "\"1\""));
}
 
示例5
@Override public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
  if (response instanceof HttpServletResponse) {
    HttpServletResponse r = (HttpServletResponse) response;

    // Defense against XSS. We don't care about IE's Content-Security-Policy because it's useless
    r.addHeader("X-Content-Security-Policy", "default-src 'self'");
    r.addHeader(HttpHeaders.X_XSS_PROTECTION, "0"); // With CSP, we don't need crazy magic

    // Tell IE not to do silly things
    r.addHeader(HttpHeaders.X_CONTENT_TYPE_OPTIONS, "nosniff");

    // Protection against click jacking
    r.addHeader("Frame-Options", "DENY"); // Who uses this?
    r.addHeader(HttpHeaders.X_FRAME_OPTIONS, "DENY");

    // https-all-the-time
    r.addHeader(HttpHeaders.STRICT_TRANSPORT_SECURITY,
        format("max-age=%d; includeSubDomains", YEAR_OF_SECONDS));
  }
  chain.doFilter(request, response);
}
 
示例6
@Test
public void checksCallbackLength() throws IOException {
  String callback =
      Strings.repeat("a", UniversalReverseClickjackingJsonpEndpoint.MAX_CALLBACK_LENGTH);

  when(request.getParameter(UniversalReverseClickjackingJsonpEndpoint.ECHOED_PARAM))
      .thenReturn(callback);
  new UniversalReverseClickjackingJsonpEndpoint().doGet(request, response);
  verify(response).setStatus(200);
  verify(response).setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
  verify(writer).write("/**/" + callback + "({'foobar':'foo'});");

  when(request.getParameter(UniversalReverseClickjackingJsonpEndpoint.ECHOED_PARAM))
      .thenReturn(callback + "a");
  new UniversalReverseClickjackingJsonpEndpoint().doGet(request, response);
  verify(response).setStatus(400);
  // Verify that we also don't write overlong callbacks
  verify(writer, never()).write(contains("/**/" + callback + "a("));
}
 
示例7
@Test
public void testToResponse_EJBException() {
    Exception e = new EJBException(new WebApplicationException());
    StackTraceElement[] traceArr = new StackTraceElement[1];
    traceArr[0] = new StackTraceElement("dummyClass", "dummyMethod", null, 0);
    
    e.setStackTrace(traceArr);
    
    Response response = rem.toResponse(e);
    MultivaluedMap<String,Object> responseMap = response.getHeaders();
    
    Assert.assertEquals(500, response.getStatus());
    Assert.assertEquals(5, responseMap.size());
    Assert.assertEquals(Lists.newArrayList(true), responseMap.get(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS));
    Assert.assertEquals(Lists.newArrayList("*"), responseMap.get(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN));
    Assert.assertEquals(Lists.newArrayList(864000), responseMap.get(HttpHeaders.ACCESS_CONTROL_MAX_AGE));
    Assert.assertEquals(Lists.newArrayList("null/null"), responseMap.get(Constants.RESPONSE_ORIGIN));
    Assert.assertEquals(Lists.newArrayList("X-SSL-ClientCert-Subject, X-ProxiedEntitiesChain, X-ProxiedIssuersChain, Accept, Accept-Encoding"),
                    responseMap.get(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS));
}
 
示例8
@Test
public void testToResponse_EJBException2() {
    Exception e = new EJBException(new QueryException());
    StackTraceElement[] traceArr = new StackTraceElement[1];
    traceArr[0] = new StackTraceElement("dummyClass", "dummyMethod", null, 0);
    
    e.setStackTrace(traceArr);
    
    Response response = rem.toResponse(e);
    MultivaluedMap<String,Object> responseMap = response.getHeaders();
    
    Assert.assertEquals(500, response.getStatus());
    Assert.assertEquals(6, responseMap.size());
    Assert.assertEquals(Lists.newArrayList(true), responseMap.get(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS));
    Assert.assertEquals(Lists.newArrayList("*"), responseMap.get(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN));
    Assert.assertEquals(Lists.newArrayList(864000), responseMap.get(HttpHeaders.ACCESS_CONTROL_MAX_AGE));
    Assert.assertEquals(Lists.newArrayList("500-1"), responseMap.get(Constants.ERROR_CODE));
    Assert.assertEquals(Lists.newArrayList("null/null"), responseMap.get(Constants.RESPONSE_ORIGIN));
    Assert.assertEquals(Lists.newArrayList("X-SSL-ClientCert-Subject, X-ProxiedEntitiesChain, X-ProxiedIssuersChain, Accept, Accept-Encoding"),
                    responseMap.get(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS));
}
 
示例9
@Test
public void testPayloadWithContentTypeHeaderXml() throws InterruptedException {
   server.enqueue(jsonResponse("int-response.json"));

   httpCommandEffector = new HttpCommandEffector(ConfigBag.newInstance()
           .configure(HttpCommandEffector.EFFECTOR_NAME, EFFECTOR_HTTP_COMMAND.getName())
           .configure(HttpCommandEffector.EFFECTOR_URI, url("/post"))
           .configure(HttpCommandEffector.EFFECTOR_HTTP_VERB, "POST")
           .configure(HttpCommandEffector.EFFECTOR_HTTP_PAYLOAD, 1)
           .configure(HttpCommandEffector.EFFECTOR_HTTP_HEADERS, ImmutableMap.of(HttpHeaders.CONTENT_TYPE, "application/xml"))
           .configure(HttpCommandEffector.JSON_PATH, "$.data")
   );
   assertNotNull(httpCommandEffector);
   TestEntity testEntity = app.createAndManageChild(buildEntitySpec(httpCommandEffector));
   Object output = testEntity.invoke(EFFECTOR_HTTP_COMMAND, ImmutableMap.<String, Object>of()).getUnchecked(Duration.seconds(1));
   assertEquals(output, "1");

   assertEquals(server.getRequestCount(), 1);
   assertSent(server, "POST", "/post");
}
 
示例10
/**
 * 根据浏览器 If-None-Match Header, 计算Etag是否已无效.
 * <p>
 * 如果Etag有效, checkIfNoneMatch返回false, 设置304 not modify status.
 *
 * @param etag 内容的ETag.
 */
public static boolean checkIfNoneMatchEtag(HttpServletRequest request, HttpServletResponse response, String etag) {
    String headerValue = request.getHeader(HttpHeaders.IF_NONE_MATCH);
    if (headerValue != null) {
        boolean conditionSatisfied = false;
        if (!"*".equals(headerValue)) {
            StringTokenizer commaTokenizer = new StringTokenizer(headerValue, ",");

            while (!conditionSatisfied && commaTokenizer.hasMoreTokens()) {
                String currentToken = commaTokenizer.nextToken();
                if (currentToken.trim().equals(etag)) {
                    conditionSatisfied = true;
                }
            }
        } else {
            conditionSatisfied = true;
        }

        if (conditionSatisfied) {
            response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
            response.setHeader(HttpHeaders.ETAG, etag);
            return false;
        }
    }
    return true;
}
 
示例11
@Test
public void testAuthenticationFailure() {
  when(authenticator.authenticate(any())).thenReturn(null);

  final Request request = Request.forUri("/", "PUT")
      .withHeader(HttpHeaders.AUTHORIZATION, "Bearer token")
      .withPayload(ByteString.encodeUtf8("hello"));

  try {
    sut.authenticate(request);
    fail();
  } catch (ResponseException e) {
    assertThat(e.getResponse().status(), is(
        Status.UNAUTHORIZED
            .withReasonPhrase("Authorization token is invalid")));
  }
}
 
示例12
/**
 * 从request中获得参数,并返回可读的Map
 * application/x-www-form-urlencode
 * application/json
 * application/json;charset=UTF-8
 * multipart/form-data
 *
 * @param request
 * @return
 */
public static Map<String, String> getParameterMap(HttpServletRequest request) {
    String contentType = request.getHeader(org.springframework.http.HttpHeaders.CONTENT_TYPE);
    Map<String, String> returnMap = new HashMap();
    if (contentType != null && contentType.contains(MediaType.MULTIPART_FORM_DATA_VALUE)) {
        // form-data表单
        MultipartResolver multipartResolver = SpringUtil.getBean(MultipartResolver.class);
        MultipartHttpServletRequest multiReq = multipartResolver.resolveMultipart(request);
        returnMap = conventMap(multiReq.getParameterMap());
    } else if (MediaType.APPLICATION_JSON_VALUE.equals(contentType) || MediaType.APPLICATION_JSON_UTF8_VALUE.equals(contentType)) {
        // json表单
        String body = getBodyString(request);
        if (StringUtils.isNoneBlank(body)) {
            try {
                returnMap = JSONObject.parseObject(body, Map.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } else {
        // 普通表单
        returnMap = conventMap(request.getParameterMap());
    }
    // 参数Map
    return returnMap;
}
 
示例13
/**
 * Construct headers for an ILP-over-HTTP request.
 *
 * @return A newly constructed instance of {@link Headers}.
 */
private Headers constructHttpRequestHeaders() {
  final Headers.Builder headers = new Headers.Builder()
      // Defaults to ILP_OCTET_STREAM, but is replaced by whatever testConnection returns if it's a valid media-type.
      .add(HttpHeaders.ACCEPT, OCTET_STREAM.toString())
      .add(CONTENT_TYPE, OCTET_STREAM.toString())
      // Disable HTTP Caching of packets...
      .add(CACHE_CONTROL, "private, max-age=0, no-cache")
      .add(PRAGMA, "no-cache");

  // Set the Operator Address header, if present.
  headers.set(ILP_OPERATOR_ADDRESS_VALUE, getOperatorAddressSupplier().get().getValue());

  headers.add(HttpHeaders.AUTHORIZATION, BEARER_WITH_SPACE + this.authTokenSupplier.get());

  return headers.build();
}
 
示例14
@Test
public void getShouldReturnFileContentsWithNameInHeader() throws IOException {
    File fileToGet = File.createTempFile("test filename with spaces", ".txt");
    FileUtils.write(fileToGet, "expected_content", StandardCharsets.UTF_8);

    CloseableHttpClient httpClient = HttpClients.createDefault();

    String encode = Base64.getUrlEncoder().encodeToString(fileToGet.getAbsolutePath().getBytes(StandardCharsets.UTF_8));
    HttpGet httpGet = new HttpGet("/FileDownloadServlet/" + encode);

    CloseableHttpResponse execute = httpClient.execute(serverHost, httpGet);

    //check contents are properly sent
    try (
            InputStream content = execute.getEntity().getContent()) {
        String s = IOUtils.toString(content, StandardCharsets.UTF_8);
        assertThat(s, is("expected_content"));
    }

    //check file name is available from header
    Header contentDispositionHeader = execute.getFirstHeader(HttpHeaders.CONTENT_DISPOSITION);
    assertThat(contentDispositionHeader.getValue(), containsString("filename=" + fileToGet.getName()));
    //check file is not locked by anything
    assertTrue(fileToGet.delete());
}
 
示例15
@Test
public void givenResourceWasRetrievedThenModified_whenRetrievingAgainWithEtag_thenResourceIsReturned() {
    // Given
    final String uriOfResource = createAsUri();
    final Response firstFindOneResponse = RestAssured.given()
        .header("Accept", "application/json")
        .get(uriOfResource);
    final String etagValue = firstFindOneResponse.getHeader(HttpHeaders.ETAG);
    final long createdId = firstFindOneResponse.jsonPath().getLong("id");

    Foo updatedFoo = new Foo("updated value");
    updatedFoo.setId(createdId);
    Response updatedResponse = RestAssured.given().contentType(ContentType.JSON).body(updatedFoo)
        .put(uriOfResource);
    assertThat(updatedResponse.getStatusCode() == 200);

    // When
    final Response secondFindOneResponse = RestAssured.given()
        .header("Accept", "application/json")
        .headers("If-None-Match", etagValue)
        .get(uriOfResource);

    // Then
    assertTrue(secondFindOneResponse.getStatusCode() == 200);
}
 
示例16
@Test
public void testPayloadWithContentTypeHeaderYaml() throws InterruptedException {
   server.enqueue((jsonResponse("map-response.json")));

   httpCommandEffector = new HttpCommandEffector(ConfigBag.newInstance()
           .configure(HttpCommandEffector.EFFECTOR_NAME, EFFECTOR_HTTP_COMMAND.getName())
           .configure(HttpCommandEffector.EFFECTOR_URI, url("/post"))
           .configure(HttpCommandEffector.EFFECTOR_HTTP_VERB, "POST")
           .configure(HttpCommandEffector.EFFECTOR_HTTP_PAYLOAD, "my yaml")
           .configure(HttpCommandEffector.EFFECTOR_HTTP_HEADERS, ImmutableMap.of(HttpHeaders.CONTENT_TYPE, "application/yaml"))
           .configure(HttpCommandEffector.JSON_PATH, "$.data")
   );
   assertNotNull(httpCommandEffector);
   TestEntity testEntity = app.createAndManageChild(buildEntitySpec(httpCommandEffector));
   testEntity.invoke(EFFECTOR_HTTP_COMMAND, ImmutableMap.<String, Object>of()).getUnchecked(Duration.minutes(1));

   assertEquals(server.getRequestCount(), 1);
   assertEquals(new String(server.takeRequest().getBody()), "my yaml");
}
 
示例17
/**
 * 根据浏览器 If-None-Match Header, 计算Etag是否已无效.
 * 
 * 如果Etag有效, checkIfNoneMatch返回false, 设置304 not modify status.
 * 
 * @param etag 内容的ETag.
 */
public static boolean checkIfNoneMatchEtag(HttpServletRequest request, HttpServletResponse response, String etag) {
	String headerValue = request.getHeader(HttpHeaders.IF_NONE_MATCH);
	if (headerValue != null) {
		boolean conditionSatisfied = false;
		if (!"*".equals(headerValue)) {
			StringTokenizer commaTokenizer = new StringTokenizer(headerValue, ",");

			while (!conditionSatisfied && commaTokenizer.hasMoreTokens()) {
				String currentToken = commaTokenizer.nextToken();
				if (currentToken.trim().equals(etag)) {
					conditionSatisfied = true;
				}
			}
		} else {
			conditionSatisfied = true;
		}

		if (conditionSatisfied) {
			response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
			response.setHeader(HttpHeaders.ETAG, etag);
			return false;
		}
	}
	return true;
}
 
示例18
@Test
public void testConfiguration() throws Exception {
    Configuration configuration = mock(Configuration.class);
    when(configuration.get("prefix")).thenReturn("/redirected");
    when(configuration.get("redirectTo")).thenReturn("http://perdu.com");

    RedirectFilter filter = new RedirectFilter(configuration);

    Route route = mock(Route.class);
    RequestContext rc = mock(RequestContext.class);
    FakeContext context = new FakeContext();
    context.setPath("/redirected").setHeader(HttpHeaders.CONNECTION, "keep-alive");

    FakeRequest request = new FakeRequest(context).method(HttpMethod.GET).uri("/redirected");

    when(rc.context()).thenReturn(context);
    when(rc.request()).thenReturn(request);
    Result result = filter.call(route, rc);
    assertThat(result).isNotNull();
    assertThat(result.getStatusCode()).isEqualTo(Status.SEE_OTHER);
    assertThat(result.getHeaders().get(HeaderNames.LOCATION)).isEqualTo("http://perdu.com");
}
 
示例19
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    String header = request.getHeader(HttpHeaders.AUTHORIZATION);

    if (header != null && header.startsWith("Basic ")) {
        String decoded = new String(BaseEncoding.base64().decode(header.substring(header.indexOf(" ") + 1)));

        if (decoded.contains(":")) {
            String username = decoded.substring(0, decoded.indexOf(":"));
            String password = decoded.substring(decoded.indexOf(":") + 1, decoded.length());

            if (username.equals(this.username) && password.equals(this.password)) {
                chain.doFilter(request, response);
                return;
            } else {
                log.info("Incorrect admin login with username '{}'.", username);
            }
        }
    }

    response.setHeader(HttpHeaders.WWW_AUTHENTICATE, "Basic realm=\"Administration\"");
    response.sendError(Response.SC_UNAUTHORIZED);
}
 
示例20
private MultiMap createHeaders(final MultiMap headers) {
  final MultiMap requestHeaders = new VertxHttpHeaders();
  requestHeaders.addAll(headers);
  requestHeaders.remove(HttpHeaders.CONTENT_LENGTH);
  requestHeaders.remove(HttpHeaders.ORIGIN);
  renameHeader(requestHeaders, HttpHeaders.HOST, HttpHeaders.X_FORWARDED_HOST);
  return requestHeaders;
}
 
示例21
/**
 * This method returns the ETag value.
 *
 * @param httpHeaders Http headers.
 * @return ETag value.
 */
private static String getETagValue(Map<String, Object> httpHeaders) {
    if (httpHeaders.get(HttpHeaders.ETAG) != null) {
        return String.valueOf(httpHeaders.get(HttpHeaders.ETAG));
    }
    return null;
}
 
示例22
@Test
public void doGet_leakedCookiePage_setsCookieAndReturnsItInResponse() throws Exception {
  ArgumentCaptor<String> setCookieHeader = ArgumentCaptor.forClass(String.class);
  doNothing()
      .when(response)
      .setHeader(Matchers.eq(HttpHeaders.SET_COOKIE), setCookieHeader.capture());
  when(request.getPathInfo()).thenReturn("/leakedcookie");

  new LeakedHttpOnlyCookie().doGet(request, response);

  String cookieValue = extractCookieValue(setCookieHeader.getValue());
  verify(response).setHeader(Matchers.eq(HttpHeaders.SET_COOKIE), contains("HttpOnly"));
  verify(writer).write(contains(cookieValue));
}
 
示例23
/**
 * Test case for isValidCacheEntry() with no-store header.
 *
 * @throws AxisFault when exception happens on message context creation.
 */
public void testIsNoStore() throws AxisFault {
    MessageContext synCtx = createMessageContext();
    org.apache.axis2.context.MessageContext msgCtx =  ((Axis2MessageContext) synCtx).getAxis2MessageContext();

    Map<String, String> headers = new HashMap<>();
    headers.put(HttpHeaders.CACHE_CONTROL, CACHE_CONTROL_HEADER);
    if (msgCtx != null) {
        msgCtx.setProperty("TRANSPORT_HEADERS", headers);
        ((Axis2MessageContext) synCtx).setAxis2MessageContext(msgCtx);
    }
    assertEquals("no-store cache-control does not exist.", HttpCachingFilter.isNoStore(msgCtx), true);
}
 
示例24
@Override public Response intercept(Chain chain) throws IOException {
  Request originalRequest = chain.request();
  if (originalRequest.body() == null ||
      originalRequest.header(HttpHeaders.CONTENT_ENCODING) != null) {
    return chain.proceed(originalRequest);
  }

  Request acceptRequest = originalRequest.newBuilder()
      .addHeader(HttpHeaders.ACCEPT, accept)
      .build();
  return chain.proceed(acceptRequest);
}
 
示例25
@Test
public void shouldDenyAccessWhenUserAgentIsNotWhiteListed() {
  underTest = new AntiCsrfHelper(true, "foo");

  when(httpServletRequest.getHeader(HttpHeaders.USER_AGENT))
      .thenReturn("Mozilla/5.0 (Windows NT; Windows NT 10.0; en-CA) bar/5.1.17134.590");
  assertThat(underTest.isAccessAllowed(httpServletRequest), is(false));
}
 
示例26
protected <T> T doHttpActionWithHeadersJson(Request.Builder requestBuilder, Optional<String> requestBody, JsonCodec<T> codec)
{
    requestBuilder.setHeader(HttpHeaders.ACCEPT, APPLICATION_JSON);
    if (requestBody.isPresent()) {
        requestBuilder.setHeader(HttpHeaders.CONTENT_TYPE, APPLICATION_JSON);
        requestBuilder.setBodyGenerator(StaticBodyGenerator.createStaticBodyGenerator(requestBody.get(), StandardCharsets.UTF_8));
    }
    Request request = requestBuilder.build();
    JsonResponseHandler<T> responseHandler = createJsonResponseHandler(codec);
    long startTime = ticker.read();
    long duration;
    T response = null;
    try {
        response = httpClient.execute(request, responseHandler);
    }
    catch (UnexpectedResponseException e) {
        throw new PinotException(
                PinotErrorCode.PINOT_HTTP_ERROR,
                Optional.empty(),
                format(
                        "Unexpected response status: %d for request %s to url %s, with headers %s, full response %s",
                        e.getStatusCode(),
                        requestBody.orElse(""),
                        request.getUri(),
                        request.getHeaders(),
                        response));
    }
    finally {
        duration = ticker.read() - startTime;
    }
    //metrics.monitorRequest(request, response, duration, TimeUnit.NANOSECONDS);
    return response;
}
 
示例27
/**
 * 设置禁止客户端缓存的Header.
 */
public static void setNoCacheHeader(HttpServletResponse response) {
	// Http 1.0 header
	response.setDateHeader(HttpHeaders.EXPIRES, 1L);
	response.addHeader(HttpHeaders.PRAGMA, "no-cache");
	// Http 1.1 header
	response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, max-age=0");
}
 
示例28
@Test
public void testIsStringBodyNotMatchWithDiffCharset()
    throws Exception {
  RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("造字");
  RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("造字");
  Multimap<String, String> headers1 = LinkedHashMultimap.create();
  headers1.put(HttpHeaders.CONTENT_TYPE, "text/html; charset=euc-kr");
  Multimap<String, String> headers2 = LinkedHashMultimap.create();
  headers2.put(HttpHeaders.CONTENT_TYPE, "text/html; charset=big5");

  RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, headers1, stringHttpBody1);
  RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, headers2, stringHttpBody2);
  MatchRule matchRule = new MatchBody();
  Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2));
}
 
示例29
/**
    * 下载文件
    *
    * @param id id
    * @author tangyi
    * @date 2018/10/30 22:26
    */
   @GetMapping("download")
   @ApiOperation(value = "下载附件", notes = "根据ID下载附件")
   @ApiImplicitParam(name = "id", value = "附件ID", required = true, dataType = "Long")
   public void download(HttpServletRequest request, HttpServletResponse response, @NotBlank Long id) {
       try {
		Attachment attachment = new Attachment();
		attachment.setId(id);
		attachment = attachmentService.get(attachment);
		if (attachment == null)
			throw new CommonException("Attachment does not exist");
		InputStream inputStream = UploadInvoker.getInstance().download(attachment);
		if (inputStream == null) {
		    log.info("attachment is not exists");
		    return;
           }
           OutputStream outputStream = response.getOutputStream();
           response.setContentType("application/zip");
           response.setHeader(HttpHeaders.CACHE_CONTROL, "max-age=10");
           // IE之外的浏览器使用编码输出名称
           String contentDisposition = "";
           String httpUserAgent = request.getHeader("User-Agent");
           if (StringUtils.isNotEmpty(httpUserAgent)) {
               httpUserAgent = httpUserAgent.toLowerCase();
               String fileName = attachment.getAttachName();
               contentDisposition = httpUserAgent.contains("wps") ? "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") : Servlets.getDownName(request, fileName);
           }
           response.setHeader(HttpHeaders.CONTENT_DISPOSITION, contentDisposition);
           response.setContentLength(inputStream.available());
           FileCopyUtils.copy(inputStream, outputStream);
           log.info("download {} success", attachment.getAttachName());
	} catch (Exception e) {
       	log.error("Download attachment failed: {}", e.getMessage(), e);
	}
}
 
示例30
@Test(expected = UnauthorizedException.class)
public void testRequireValidToken_tokenMismatch() {
  when(httpServletRequest.getHeader(HttpHeaders.USER_AGENT)).thenReturn(BROWSER_UA);
  when(httpServletRequest.getCookies())
      .thenReturn(new Cookie[] { new Cookie(AntiCsrfHelper.ANTI_CSRF_TOKEN_NAME, "a-value") });
  underTest.requireValidToken(httpServletRequest, "a-different-value");
}