コード例 #1
0
 /**
  * Execute HTTP call and deserialize the HTTP response body into the given return type.
  *
  * @param returnType The return type used to deserialize HTTP response body
  * @param <T> The return type corresponding to (same with) returnType
  * @param call Call
  * @return ApiResponse object containing response status, headers and data, which is a Java object
  *     deserialized from response body and would be null when returnType is null.
  * @throws ApiException If fail to execute the call
  */
 public <T> ApiResponse<T> execute(Call call, Type returnType) throws ApiException {
   try {
     Response response = call.execute();
     T data = handleResponse(response, returnType);
     return new ApiResponse<T>(response.code(), response.headers().toMultimap(), data);
   } catch (IOException e) {
     throw new ApiException(e);
   }
 }
コード例 #2
0
  @Override
  public HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders)
      throws IOException, AuthFailureError {
    OkHttpClient client = okHttpClient.clone();
    int timeoutMs = request.getTimeoutMs();
    client.setConnectTimeout(timeoutMs, TimeUnit.MILLISECONDS);
    client.setReadTimeout(timeoutMs, TimeUnit.MILLISECONDS);
    client.setWriteTimeout(timeoutMs, TimeUnit.MILLISECONDS);

    com.squareup.okhttp.Request.Builder okHttpRequestBuilder =
        new com.squareup.okhttp.Request.Builder();
    okHttpRequestBuilder.url(request.getUrl());

    Map<String, String> headers = request.getHeaders();

    for (final String name : headers.keySet()) {
      okHttpRequestBuilder.addHeader(name, headers.get(name));
    }

    for (final String name : additionalHeaders.keySet()) {
      okHttpRequestBuilder.addHeader(name, additionalHeaders.get(name));
    }

    setConnectionParametersForRequest(okHttpRequestBuilder, request);

    com.squareup.okhttp.Request okHttpRequest = okHttpRequestBuilder.build();
    Call okHttpCall = client.newCall(okHttpRequest);
    Response okHttpResponse = okHttpCall.execute();

    StatusLine responseStatus =
        new BasicStatusLine(
            parseProtocol(okHttpResponse.protocol()),
            okHttpResponse.code(),
            okHttpResponse.message());

    BasicHttpResponse response = new BasicHttpResponse(responseStatus);
    response.setEntity(entityFromOkHttpResponse(okHttpResponse));

    Headers responseHeaders = okHttpResponse.headers();

    for (int i = 0, len = responseHeaders.size(); i < len; i++) {
      final String name = responseHeaders.name(i), value = responseHeaders.value(i);

      if (name != null) {
        response.addHeader(new BasicHeader(name, value));
      }
    }

    return response;
  }
コード例 #3
0
 public <T> T execute(Request request, Class<T> clazz) throws IOException {
   Call call = mOkHttpClient.newCall(request);
   Response execute = call.execute();
   String respStr = execute.body().string();
   return mGson.fromJson(respStr, clazz);
 }
コード例 #4
0
ファイル: OkhttpManager.java プロジェクト: yxs666/cniao5-news
 /**
  * 同步Get请求方法
  *
  * @param url
  * @return
  * @throws IOException
  */
 private Response p_getSync(String url) throws IOException {
   final Request request = new Request.Builder().url(url).build();
   Call call = client.newCall(request);
   Response response = call.execute();
   return response;
 }
コード例 #5
0
 public Response execute() throws IOException {
   generateCall(null);
   return call.execute();
 }
コード例 #6
0
 /** 同步的Get请求 */
 public Response get(String url) throws IOException {
   final Request request = new Request.Builder().url(url).build();
   Call call = mOkHttpClient.newCall(request);
   Response execute = call.execute();
   return execute;
 }
コード例 #7
0
 private Response getInputStream() throws IOException {
   Call call = mOkHttpClient.newCall(request);
   return call.execute();
 }