Java 类org.springframework.http.client.ClientHttpResponse 实例源码

项目:seldon-core    文件:SeldonRestTemplateExchangeTagsProvider.java   
@Override
public Iterable<Tag> getTags(String urlTemplate, HttpRequest request, ClientHttpResponse response) 
{
    Tag uriTag = StringUtils.hasText(urlTemplate)? RestTemplateExchangeTags.uri(urlTemplate): RestTemplateExchangeTags.uri(request);



    return Arrays.asList(RestTemplateExchangeTags.method(request), uriTag,
            RestTemplateExchangeTags.status(response),
            RestTemplateExchangeTags.clientName(request),
            modelName(request),
            modelImage(request),
            modelVersion(request),
            projectName(),
            deploymentName(),
            deploymentVersion(),
            predictorName(),
            predictorVersion());
}
项目:spring-rest-template-logger    文件:LoggingInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
    throws IOException
{
    if (log.isDebugEnabled())
    {
        log.debug(String.format("Request: %s %s %s", request.getMethod(), request.getURI(),
            new String(body, getCharset(request))));
    }

    ClientHttpResponse response = execution.execute(request, body);

    if (log.isDebugEnabled())
    {
        log.debug(String.format("Response: %s %s", response.getStatusCode().value(),
            copyToString(response.getBody(), getCharset(response))));
    }

    return response;
}
项目:incubator-servicecomb-saga    文件:TransactionClientHttpRequestInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
    ClientHttpRequestExecution execution) throws IOException {

  if (omegaContext.globalTxId() != null) {
    request.getHeaders().add(GLOBAL_TX_ID_KEY, omegaContext.globalTxId());
    request.getHeaders().add(LOCAL_TX_ID_KEY, omegaContext.localTxId());

    LOG.debug("Added {} {} and {} {} to request header",
        GLOBAL_TX_ID_KEY,
        omegaContext.globalTxId(),
        LOCAL_TX_ID_KEY,
        omegaContext.localTxId());
  }
  return execution.execute(request, body);
}
项目:lams    文件:AsyncRestTemplate.java   
/**
 * Execute the given method on the provided URI. The
 * {@link org.springframework.http.client.ClientHttpRequest}
 * is processed using the {@link RequestCallback}; the response with
 * the {@link ResponseExtractor}.
 * @param url the fully-expanded URL to connect to
 * @param method the HTTP method to execute (GET, POST, etc.)
 * @param requestCallback object that prepares the request (can be {@code null})
 * @param responseExtractor object that extracts the return value from the response (can
 * be {@code null})
 * @return an arbitrary object, as returned by the {@link ResponseExtractor}
 */
protected <T> ListenableFuture<T> doExecute(URI url, HttpMethod method, AsyncRequestCallback requestCallback,
        ResponseExtractor<T> responseExtractor) throws RestClientException {

    Assert.notNull(url, "'url' must not be null");
    Assert.notNull(method, "'method' must not be null");
    try {
        AsyncClientHttpRequest request = createAsyncRequest(url, method);
        if (requestCallback != null) {
            requestCallback.doWithRequest(request);
        }
        ListenableFuture<ClientHttpResponse> responseFuture = request.executeAsync();
        return new ResponseExtractorFuture<T>(method, url, responseFuture,
                responseExtractor);
    }
    catch (IOException ex) {
        throw new ResourceAccessException("I/O error on " + method.name() +
                " request for \"" + url + "\":" + ex.getMessage(), ex);
    }
}
项目:lams    文件:AsyncRestTemplate.java   
@Override
protected final T adapt(ClientHttpResponse response) throws ExecutionException {
    try {
        if (!getErrorHandler().hasError(response)) {
            logResponseStatus(this.method, this.url, response);
        }
        else {
            handleResponseError(this.method, this.url, response);
        }
        return convertResponse(response);
    }
    catch (IOException ex) {
        throw new ExecutionException(ex);
    }
    finally {
        if (response != null) {
            response.close();
        }
    }
}
项目:eventapis    文件:RequestInterceptor.java   
private void traceResponse(ClientHttpResponse response) throws IOException {
    StringBuilder inputStringBuilder = new StringBuilder();
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getBody(), "UTF-8"));
    String line = bufferedReader.readLine();
    while (line != null) {
        inputStringBuilder.append(line);
        inputStringBuilder.append('\n');
        line = bufferedReader.readLine();
    }
    log.debug("============================response begin==========================================");
    log.debug("Status code  : {}", response.getStatusCode());
    log.debug("Status text  : {}", response.getStatusText());
    log.debug("Headers      : {}", response.getHeaders());
    log.debug("Response body: {}", inputStringBuilder.toString());
    log.debug("=======================response end=================================================");
}
项目:jwala    文件:JvmServiceImplTest.java   
@Test
public void testPerformDiagnosis() throws IOException, URISyntaxException {
    Identifier<Jvm> aJvmId = new Identifier<>(11L);
    Jvm jvm = mock(Jvm.class);
    when(jvm.getId()).thenReturn(aJvmId);
    final URI uri = new URI("http://test.com");
    when(jvm.getStatusUri()).thenReturn(new URI("http://test.com"));
    when(Config.mockJvmPersistenceService.getJvm(aJvmId)).thenReturn(jvm);

    ClientHttpResponse mockResponse = mock(ClientHttpResponse.class);
    when(mockResponse.getStatusCode()).thenReturn(HttpStatus.OK);
    when(Config.mockClientFactoryHelper.requestGet(any(URI.class))).thenReturn(mockResponse);

    jvmService.performDiagnosis(aJvmId, new User("user"));
    verify(Config.mockClientFactoryHelper).requestGet(eq(uri));

    reset(Config.mockClientFactoryHelper);
    when(mockResponse.getStatusCode()).thenReturn(HttpStatus.REQUEST_TIMEOUT);
    when(Config.mockClientFactoryHelper.requestGet(any(URI.class))).thenReturn(mockResponse);
    jvmService.performDiagnosis(aJvmId, new User("user"));
    verify(Config.mockClientFactoryHelper).requestGet(eq(uri));
}
项目:cerebro    文件:SeyrenResponseErrorHandler.java   
@Override
public void handleError(ClientHttpResponse response) throws IOException {
    String seyrenResponseBody;
    LOGGER.debug("Response : {} {}", response.getStatusCode(), response.getStatusText());
    if (response.getBody() != null) {
        seyrenResponseBody = CharStreams.toString(new InputStreamReader(response.getBody(), "UTF-8"));
    } else {
        seyrenResponseBody = "Response whithout body";
    }
    CerebroException exception = new CerebroException(ErrorCode.SEYREN_ERROR, seyrenResponseBody);
    throw exception;
}
项目:xm-uaa    文件:TwitterErrorHandler.java   
private static void handleClientErrors(ClientHttpResponse response) throws IOException {
    HttpStatus statusCode = response.getStatusCode();
    Map<String, Object> errorMap = extractErrorDetailsFromResponse(response);

    String errorText = "";
    if (errorMap.containsKey("error")) {
        errorText = (String) errorMap.get("error");
    } else if (errorMap.containsKey("errors")) {
        Object errors = errorMap.get("errors");
        if (errors instanceof List) {
            @SuppressWarnings("unchecked")
            List<Map<String, String>> errorsList = (List<Map<String, String>>) errors;
            errorText = errorsList.get(0).get("message");
        } else if (errors instanceof String) {
            errorText = (String) errors;
        }
    }

    if (statusCode == HttpStatus.BAD_REQUEST) {
        if (errorText.contains("Rate limit exceeded.")) {
            throw new RateLimitExceededException(TWITTER);
        }
    } else if (statusCode == HttpStatus.UNAUTHORIZED) {
        if (errorText == null) {
            throw new NotAuthorizedException(TWITTER, response.getStatusText());
        } else if ("Could not authenticate you.".equals(errorText)) {
            throw new MissingAuthorizationException(TWITTER);
        } else if ("Could not authenticate with OAuth.".equals(errorText)) { // revoked token
            throw new RevokedAuthorizationException(TWITTER);
        } else if ("Invalid / expired Token".equals(errorText)) {
            // Note that Twitter doesn't actually expire tokens
            throw new InvalidAuthorizationException(TWITTER, errorText);
        } else {
            throw new NotAuthorizedException(TWITTER, errorText);
        }
    } else if (statusCode == HttpStatus.FORBIDDEN) {
        if (errorText.equals(DUPLICATE_STATUS_TEXT) || errorText.contains("You already said that")) {
            throw new DuplicateStatusException(TWITTER, errorText);
        } else if (errorText.equals(STATUS_TOO_LONG_TEXT) || errorText.contains(MESSAGE_TOO_LONG_TEXT)) {
            throw new MessageTooLongException(errorText);
        } else if (errorText.equals(INVALID_MESSAGE_RECIPIENT_TEXT)) {
            throw new InvalidMessageRecipientException(errorText);
        } else if (errorText.equals(DAILY_RATE_LIMIT_TEXT)) {
            throw new RateLimitExceededException(TWITTER);
        } else {
            throw new OperationNotPermittedException(TWITTER, errorText);
        }
    } else if (statusCode == HttpStatus.NOT_FOUND) {
        throw new ResourceNotFoundException(TWITTER, errorText);
    } else if (statusCode == HttpStatus.valueOf(ENHANCE_YOUR_CALM) || statusCode == HttpStatus
        .valueOf(TOO_MANY_REQUESTS)) {
        throw new RateLimitExceededException(TWITTER);
    }

}
项目:xm-uaa    文件:TwitterErrorHandler.java   
private static Map<String, Object> extractErrorDetailsFromResponse(ClientHttpResponse response) throws IOException {
    ObjectMapper mapper = new ObjectMapper(new JsonFactory());
    try {
        return mapper.readValue(response.getBody(), new TypeReference<Map<String, Object>>() {
        });
    } catch (JsonParseException e) {
        log.error("Can not parse error details from response", e);
        return Collections.emptyMap();
    }
}
项目:incubator-servicecomb-java-chassis    文件:CseClientHttpRequest.java   
@Override
public ClientHttpResponse execute() throws IOException {
  path = findUriPath(uri);
  requestMeta = createRequestMeta(method.name(), uri);

  QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri.getRawSchemeSpecificPart());
  queryParams = queryStringDecoder.parameters();

  Object[] args = this.collectArguments();

  // 异常流程,直接抛异常出去
  return this.invoke(args);
}
项目:Settings    文件:ApiClient.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
    logRequest(request, body);
    ClientHttpResponse response = execution.execute(request, body);
    logResponse(response);
    return response;
}
项目:pokeraidbot    文件:LoggingRequestInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
    traceRequest(request, body);
    ClientHttpResponse response = execution.execute(request, body);
    traceResponse(response);
    return response;
}
项目:loom    文件:ScopedClientHttpRequestInterceptor.java   
@Override
public ClientHttpResponse intercept(final HttpRequest request, final byte[] body,
        final ClientHttpRequestExecution execution) throws IOException {
    HttpHeaders headers = request.getHeaders();
    headers.add("X-Auth-Token", tokenManager.getTokenHolder().getScopedToken(projectId));
    if (LOG.isInfoEnabled()) {
        LOG.info("X-Auth-Token: " + tokenManager.getTokenHolder().getScopedToken(projectId));
    }
    return execution.execute(request, body);
}
项目:cf-java-client-sap    文件:CloudFoundryClientTest.java   
private void assertNetworkCallFails(RestTemplate restTemplate, ClientHttpRequestFactory requestFactory) {
    restTemplate.setRequestFactory(requestFactory);
    try {
        HttpStatus status = restTemplate.execute(CCNG_API_URL + "/info", HttpMethod.GET, null, new ResponseExtractor<HttpStatus>() {
            public HttpStatus extractData(ClientHttpResponse response) throws IOException {
                return response.getStatusCode();
            }
        });
        Assert.fail("Expected byteman rules to detect direct socket connections, status is:" + status);
    } catch (Exception e) {
        // good, byteman rejected it as expected
        // e.printStackTrace();
    }
    assertEquals("Not expecting Jetty to receive requests since we asked direct connections", 0, nbInJvmProxyRcvReqs.get());
}
项目:spring-rest-template-logger    文件:LoggingCustomizerTest.java   
@Test
public void canBufferResponses() throws IOException
{
    MockClientHttpRequest request = new MockClientHttpRequest();
    MockClientHttpResponse response = new MockClientHttpResponse(singleUseStream("hello".getBytes()), OK);
    request.setResponse(response);
    when(requestFactory.createRequest(URI.create("http://example.com"), GET)).thenReturn(request);

    loggingCustomizer.customize(restTemplate);

    ClientHttpResponse actualResponse = restTemplate.getRequestFactory()
        .createRequest(URI.create("http://example.com"), GET)
        .execute();
    assertThat(copyToByteArray(actualResponse.getBody()), equalTo("hello".getBytes()));
}
项目:tx-lcn    文件:TransactionHttpRequestInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
    TxTransactionLocal txTransactionLocal = TxTransactionLocal.current();
    String groupId = txTransactionLocal==null?null:txTransactionLocal.getGroupId();
    request.getHeaders().add("tx-group",groupId);
    if (txTransactionLocal != null) {
        if (txTransactionLocal.isHasCompensate()) {
            request.getHeaders().add("tx-group", CompensateService.COMPENSATE_KEY);
        } else {
            request.getHeaders().add("tx-group",groupId);
        }
    }
    return execution.execute(request,body);
}
项目:che-starter    文件:GitHubInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
        throws IOException {
    HttpHeaders headers = request.getHeaders();
    headers.add(AUTHORIZATION_HEADER, gitHubToken);
    headers.add(USER_AGENT_HEADER, USER_AGENT_VALUE);
    headers.setContentType(MediaType.APPLICATION_JSON);
    return execution.execute(request, body);
}
项目:che-starter    文件:KeycloakInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
        throws IOException {
    HttpHeaders headers = request.getHeaders();
    headers.add(AUTHORIZATION_HEADER, keycloakToken);
    headers.add(REQUEST_ID_HEADER, getRequestId());
    return execution.execute(request, body);
}
项目:loom    文件:SelfRevokingKeystoneV3Provider.java   
@Override
public ClientHttpResponse intercept(final HttpRequest request, final byte[] body,
        final ClientHttpRequestExecution execution) throws IOException {
    HttpHeaders headers = request.getHeaders();
    headers.add("X-Subject-Token", currentToken);
    headers.add("X-Auth-Token", currentToken);
    return execution.execute(request, body);
}
项目:java-spring-web    文件:AbstractTracingClientTest.java   
@Test
public void testInject() {
    String url = "http://localhost:4000/foo";
    mockServer.expect(MockRestRequestMatchers.requestTo(url))
            .andExpect(MockRestRequestMatchers.method(HttpMethod.GET))
            .andRespond(new ResponseCreator() {
                @Override
                public ClientHttpResponse createResponse(ClientHttpRequest request) throws IOException {
                    MockClientHttpResponse response =
                            new MockClientHttpResponse(new byte[1], HttpStatus.OK);

                    response.getHeaders().add("traceId", request.getHeaders()
                            .getFirst("traceId"));
                    response.getHeaders().add("spanId", request.getHeaders()
                            .getFirst("spanId"));
                    return response;
                }
            });

    ResponseEntity<String> responseEntity = client.getForEntity(url, String.class);

    List<MockSpan> mockSpans = mockTracer.finishedSpans();
    Assert.assertEquals(1, mockSpans.size());
    Assert.assertEquals(mockSpans.get(0).context().traceId(),
            Long.parseLong(responseEntity.getHeaders().getFirst("traceId")));
    Assert.assertEquals(mockSpans.get(0).context().spanId(),
            Long.parseLong(responseEntity.getHeaders().getFirst("spanId")));
}
项目:micrometer    文件:MetricsClientHttpRequestInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
                                    ClientHttpRequestExecution execution) throws IOException {
    long startTime = System.nanoTime();
    ClientHttpResponse response = null;
    try {
        response = execution.execute(request, body);
        return response;
    } finally {
        getTimeBuilder(request, response).register(this.meterRegistry)
            .record(System.nanoTime() - startTime, TimeUnit.NANOSECONDS);
        urlTemplate.remove();
    }
}
项目:FastBootWeixin    文件:WxResponseErrorHandler.java   
@Override
public void handleError(ClientHttpResponse response) throws IOException {
    HttpStatus statusCode = getHttpStatusCode(response);
    switch (statusCode.series()) {
        case CLIENT_ERROR:
            throw new WxApiResponseException(new String(getResponseBody(response), StandardCharsets.UTF_8), response, statusCode);
        case SERVER_ERROR:
            throw new WxApiResponseException(new String(getResponseBody(response), StandardCharsets.UTF_8), response, statusCode);
        default:
            throw new WxApiResultException(new String(getResponseBody(response), StandardCharsets.UTF_8));
    }
}
项目:micrometer    文件:DefaultRestTemplateExchangeTagsProvider.java   
@Override
public Iterable<Tag> getTags(String urlTemplate, HttpRequest request,
                             ClientHttpResponse response) {
    Tag uriTag = StringUtils.hasText(urlTemplate)
        ? RestTemplateExchangeTags.uri(urlTemplate)
        : RestTemplateExchangeTags.uri(request);
    return Arrays.asList(RestTemplateExchangeTags.method(request), uriTag,
        RestTemplateExchangeTags.status(response),
        RestTemplateExchangeTags.clientName(request));
}
项目:micrometer    文件:RestTemplateExchangeTags.java   
private static String getStatusMessage(ClientHttpResponse response) {
    try {
        if (response == null) {
            return "CLIENT_ERROR";
        }
        return String.valueOf(response.getRawStatusCode());
    } catch (IOException ex) {
        return "IO_ERROR";
    }
}
项目:OAuth-2.0-Cookbook    文件:HttpRequestWithPoPSignatureInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
    ClientHttpRequestExecution execution) throws IOException {
    OAuth2ClientContext clientContext = applicationContext.getBean(OAuth2ClientContext.class);
    OAuth2AccessToken accessToken = clientContext.getAccessToken();

    request.getHeaders().set("Authorization", "Bearer " + accessToken.getValue());
    request.getHeaders().set("nonce", keyPairManager.getSignedContent(UUID.randomUUID().toString()));

    return execution.execute(request, body);
}
项目:springboot-security-wechat    文件:MyAuthorizationCodeAccessTokenProvider.java   
protected ResponseExtractor<ResponseEntity<Void>> getAuthorizationResponseExtractor() {
    return new ResponseExtractor<ResponseEntity<Void>>() {
        public ResponseEntity<Void> extractData(ClientHttpResponse response) throws IOException {
            return new ResponseEntity(response.getHeaders(), response.getStatusCode());
        }
    };
}
项目:springboot-security-wechat    文件:MyAuthorizationCodeAccessTokenProvider.java   
protected OAuth2AccessToken retrieveToken(final AccessTokenRequest request,
                                          OAuth2ProtectedResourceDetails resource,
                                          MultiValueMap<String, String> form,
                                          HttpHeaders headers) throws OAuth2AccessDeniedException {
    try {
        this.authenticationHandler.authenticateTokenRequest(resource, form, headers);
        this.tokenRequestEnhancer.enhance(request, resource, form, headers);
        final ResponseExtractor<OAuth2AccessToken> delegate = this.getResponseExtractor();

        ResponseExtractor<OAuth2AccessToken> extractor = new ResponseExtractor<OAuth2AccessToken>() {
            public OAuth2AccessToken extractData(ClientHttpResponse response) throws IOException {
                if(response.getHeaders().containsKey("Set-Cookie")) {
                    request.setCookie(response.getHeaders().getFirst("Set-Cookie"));
                }

                return (OAuth2AccessToken)delegate.extractData(response);
            }
        };
        System.out.println("URI == " + this.getAccessTokenUri(resource, form));
        return (OAuth2AccessToken)this.getRestTemplate().execute(this.getAccessTokenUri(resource, form),
                this.getHttpMethod(),
                this.getRequestCallback(resource, form, headers),
                extractor,
                form.toSingleValueMap());
    } catch (OAuth2Exception var8) {
        System.out.println(var8.toString());
        throw new OAuth2AccessDeniedException("Access token denied.", resource, var8);
    } catch (RestClientException var9) {
        System.out.println(var9.toString());
        throw new OAuth2AccessDeniedException("Error requesting access token.", resource, var9);
    }
}
项目:esup-ecandidat    文件:SiScolRestUtils.java   
/**
 * @param response
 * @return le charset du header
 */
private static Charset getCharset(ClientHttpResponse response) {
    HttpHeaders headers = response.getHeaders();
    MediaType contentType = headers.getContentType();
    Charset charset =  contentType != null ? contentType.getCharset() : null;
    if (charset == null){
        charset = Charset.forName(ConstanteUtils.WS_APOGEE_DEFAULT_CHARSET);
    }
    return charset;
}
项目:esup-ecandidat    文件:SiScolRestUtils.java   
@Override
public void handleError(ClientHttpResponse response) throws IOException {
    try{
        String jsonInString = IOUtils.toString(response.getBody(), getCharset(response));
        SiScolRestException erreur = new ObjectMapper().readValue(jsonInString, SiScolRestException.class);             
        throw erreur;
    }catch(SiScolRestException e){
        throw e;
    }catch (Exception ex){}
    errorHandler.handleError(response);
}
项目:twitch4j    文件:RestErrorHandler.java   
@Override
public void handleError(ClientHttpResponse clienthttpresponse) throws IOException {
    if (clienthttpresponse.getStatusCode() == HttpStatus.FORBIDDEN) {
        Logger.debug(this, HttpStatus.FORBIDDEN + " response. Throwing authentication exception");
        // throw new AuthenticationException();
    }
}
项目:twitch4j    文件:RestErrorHandler.java   
@Override
public boolean hasError(ClientHttpResponse clienthttpresponse) throws IOException {

    if (clienthttpresponse.getStatusCode() != HttpStatus.OK) {
        String content = IOUtils.toString(clienthttpresponse.getBody(), "UTF-8");

        // The server has successfully fulfilled the request and that there is no additional content to send in the response payload body.
        if(clienthttpresponse.getStatusCode() == HttpStatus.NO_CONTENT) {
            return false;
        }

        // JSON String to RestError
        try {
            // REST Error
            ObjectMapper mapper = new ObjectMapper();
            RestError restError = mapper.readValue(content, RestError.class);

            // Add HTTP Status Code to Error
            if (restError.getStatus() == null) {
                restError.setStatus(clienthttpresponse.getStatusCode().ordinal());
            }

            throw new RestException(restError);

        } catch (RestException restException) {
            // Rethrow
            throw restException;
        } catch (Exception ex) {

            // No REST Error
            Logger.trace(this, "Status code: " + clienthttpresponse.getStatusCode());
            Logger.trace(this, "Response" + clienthttpresponse.getStatusText());
            Logger.trace(this, "Content: " + content);

            if (clienthttpresponse.getStatusCode() == HttpStatus.FORBIDDEN) {
                if (content.contains("used Cloudflare to restrict access")) {
                    Logger.warn(this, "Your current ip is banned by cloudflare, so you can't reach the target.");
                } else {
                    Logger.debug(this, "Call returned a error 403 forbidden resposne ");
                }

                return true;
            }

        }
    }
    return false;
}
项目:twitch4j    文件:QueryRequestInterceptor.java   
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
    HttpRequestDecorator httpRequest = new HttpRequestDecorator(request);

    if(name != null && value != null) {
        httpRequest.addParameter(name, value);
    }

    return execution.execute(httpRequest, body);
}
项目:pact-spring-mvc    文件:ReturnExpect.java   
private void getOrCreateWorkflowAndAddInteraction(Pact pact, ClientHttpRequest clientRequest, ClientHttpResponse response) throws IOException {
    String bodyString = StreamUtils.copyToString(response.getBody(), Charset.defaultCharset());
    response.getBody().reset();

    Pact.Interaction interaction = new Pact.Interaction(
            null,
            new Pact.InteractionRequest(restRequestDescriptor.getMethod(), urlencode(restRequestDescriptor.getUrl()), clientRequest.getHeaders(), extractBodyContent(restRequestDescriptor.getRequest())),
            new Pact.InteractionResponse(response.getRawStatusCode(), response.getHeaders(), bodyString, schema),
            objectConverter);
    Pact.Workflow workflow = pact.getWorkflow(this.workflowId, this.providerStates);
    workflow.addInteraction(interaction);
}
项目:lams    文件:RestTemplate.java   
/**
 * Execute the given method on the provided URI.
 * <p>The {@link ClientHttpRequest} is processed using the {@link RequestCallback};
 * the response with the {@link ResponseExtractor}.
 * @param url the fully-expanded URL to connect to
 * @param method the HTTP method to execute (GET, POST, etc.)
 * @param requestCallback object that prepares the request (can be {@code null})
 * @param responseExtractor object that extracts the return value from the response (can be {@code null})
 * @return an arbitrary object, as returned by the {@link ResponseExtractor}
 */
protected <T> T doExecute(URI url, HttpMethod method, RequestCallback requestCallback,
        ResponseExtractor<T> responseExtractor) throws RestClientException {

    Assert.notNull(url, "'url' must not be null");
    Assert.notNull(method, "'method' must not be null");
    ClientHttpResponse response = null;
    try {
        ClientHttpRequest request = createRequest(url, method);
        if (requestCallback != null) {
            requestCallback.doWithRequest(request);
        }
        response = request.execute();
        if (!getErrorHandler().hasError(response)) {
            logResponseStatus(method, url, response);
        }
        else {
            handleResponseError(method, url, response);
        }
        if (responseExtractor != null) {
            return responseExtractor.extractData(response);
        }
        else {
            return null;
        }
    }
    catch (IOException ex) {
        throw new ResourceAccessException("I/O error on " + method.name() +
                " request for \"" + url + "\":" + ex.getMessage(), ex);
    }
    finally {
        if (response != null) {
            response.close();
        }
    }
}
项目:lams    文件:RestTemplate.java   
private void logResponseStatus(HttpMethod method, URI url, ClientHttpResponse response) {
    if (logger.isDebugEnabled()) {
        try {
            logger.debug(method.name() + " request for \"" + url + "\" resulted in " +
                    response.getStatusCode() + " (" + response.getStatusText() + ")");
        }
        catch (IOException e) {
            // ignore
        }
    }
}
项目:lams    文件:RestTemplate.java   
private void handleResponseError(HttpMethod method, URI url, ClientHttpResponse response) throws IOException {
    if (logger.isWarnEnabled()) {
        try {
            logger.warn(method.name() + " request for \"" + url + "\" resulted in " +
                    response.getStatusCode() + " (" + response.getStatusText() + "); invoking error handler");
        }
        catch (IOException e) {
            // ignore
        }
    }
    getErrorHandler().handleError(response);
}
项目:FastBootWeixin    文件:WxResponseErrorHandler.java   
protected byte[] getResponseBody(ClientHttpResponse response) {
    try {
        InputStream responseBody = response.getBody();
        if (responseBody != null) {
            return FileCopyUtils.copyToByteArray(responseBody);
        }
    } catch (IOException ex) {
        // ignore
    }
    return new byte[0];
}
项目:loom    文件:UnscopedClientHttpRequestInterceptor.java   
@Override
public ClientHttpResponse intercept(final HttpRequest request, final byte[] body,
        final ClientHttpRequestExecution execution) throws IOException {
    HttpHeaders headers = request.getHeaders();
    headers.add("X-Auth-Token", tokenManager.getTokenHolder().getUnscoped());
    if (LOG.isInfoEnabled()) {
        LOG.info("X-Auth-Token: " + tokenManager.getTokenHolder().getUnscoped());
    }
    return execution.execute(request, body);
}
项目:lams    文件:AsyncRestTemplate.java   
private void logResponseStatus(HttpMethod method, URI url, ClientHttpResponse response) {
    if (logger.isDebugEnabled()) {
        try {
            logger.debug("Async " + method.name() + " request for \"" + url +
                    "\" resulted in " + response.getStatusCode() + " (" +
                    response.getStatusText() + ")");
        }
        catch (IOException ex) {
            // ignore
        }
    }
}