コード例 #1
0
ファイル: MainTest.java プロジェクト: kidfolk/okhttp
 @Test
 public void put() {
   Request request = fromArgs("-X", "PUT", "http://example.com").createRequest();
   assertEquals("PUT", request.method());
   assertEquals("http://example.com", request.urlString());
   assertNull(request.body());
 }
コード例 #2
0
 private void parseCache(Request request, T object, String string, String mimeType)
     throws UnsupportedEncodingException {
   com.squareup.okhttp.CacheControl cacheControl = request.cacheControl();
   if (cacheControl != null) {
     if (!cacheControl.noCache() && !cacheControl.noStore()) {
       if (object instanceof EAResult) {
         EAResult kResult = (EAResult) object;
         if (kResult != null && kResult.isSuccess()) {
           long now = System.currentTimeMillis();
           long maxAge = cacheControl.maxAgeSeconds();
           long softExpire = now + maxAge * 1000;
           System.out.println("缓存时长:" + (softExpire - now) / 1000 + "秒");
           Cache.Entry entry = new Cache.Entry();
           entry.softTtl = softExpire;
           entry.ttl = entry.softTtl;
           // entry.serverDate = serverDate;
           // entry.responseHeaders = headers;
           entry.mimeType = mimeType;
           System.out.println("request.cacheControl()==" + request.cacheControl());
           entry.data = string.getBytes(UTF8);
           cache.put(request.urlString(), entry);
         }
       }
     }
   }
 }
コード例 #3
0
ファイル: RouteSelector.java プロジェクト: Gongcong/okhttp
  public static RouteSelector get(Request request, OkHttpClient client, Dns dns)
      throws IOException {
    String uriHost = request.url().getHost();
    if (uriHost == null || uriHost.length() == 0) {
      throw new UnknownHostException(request.url().toString());
    }

    SSLSocketFactory sslSocketFactory = null;
    HostnameVerifier hostnameVerifier = null;
    if (request.isHttps()) {
      sslSocketFactory = client.getSslSocketFactory();
      hostnameVerifier = client.getHostnameVerifier();
    }

    Address address =
        new Address(
            uriHost,
            getEffectivePort(request.url()),
            client.getSocketFactory(),
            sslSocketFactory,
            hostnameVerifier,
            client.getAuthenticator(),
            client.getProxy(),
            client.getProtocols());

    return new RouteSelector(address, request.uri(), dns, client, request);
  }
コード例 #4
0
 @Override
 public Map<String, String> getAllHeaders() {
   HashMap<String, String> headers = new HashMap<>();
   for (String key : request.headers().names()) {
     headers.put(key, request.header(key));
   }
   return headers;
 }
コード例 #5
0
ファイル: MainTest.java プロジェクト: kidfolk/okhttp
 @Test
 public void userAgent() {
   Request request = fromArgs("-A", "foo", "http://example.com").createRequest();
   assertEquals("GET", request.method());
   assertEquals("http://example.com", request.urlString());
   assertEquals("foo", request.header("User-Agent"));
   assertNull(request.body());
 }
コード例 #6
0
ファイル: MainTest.java プロジェクト: kidfolk/okhttp
 @Test
 public void referer() {
   Request request = fromArgs("-e", "foo", "http://example.com").createRequest();
   assertEquals("GET", request.method());
   assertEquals("http://example.com", request.urlString());
   assertEquals("foo", request.header("Referer"));
   assertNull(request.body());
 }
コード例 #7
0
 @Override
 public String getContentType() {
   if (request.body() != null) {
     return (request.body().contentType() != null)
         ? request.body().contentType().toString()
         : null;
   }
   return null;
 }
コード例 #8
0
 @Override
 public InputStream getMessagePayload() throws IOException {
   if (request.body() == null) {
     return null;
   }
   Buffer buf = new Buffer();
   request.body().writeTo(buf);
   return buf.inputStream();
 }
コード例 #9
0
ファイル: MainTest.java プロジェクト: kidfolk/okhttp
 @Test
 public void dataPut() {
   Request request = fromArgs("-d", "foo", "-X", "PUT", "http://example.com").createRequest();
   Request.Body body = request.body();
   assertEquals("PUT", request.method());
   assertEquals("http://example.com", request.urlString());
   assertEquals("application/x-form-urlencoded; charset=utf-8", body.contentType().toString());
   assertEquals("foo", bodyAsString(body));
 }
コード例 #10
0
  private static String bodyToString(final Request request) {

    try {
      final Request copy = request.newBuilder().build();
      final Buffer buffer = new Buffer();
      copy.body().writeTo(buffer);
      return buffer.readUtf8();
    } catch (final IOException e) {
      return "did not work";
    }
  }
コード例 #11
0
ファイル: MainTest.java プロジェクト: kidfolk/okhttp
 @Test
 public void contentTypeHeader() {
   Request request =
       fromArgs("-d", "foo", "-H", "Content-Type: application/json", "http://example.com")
           .createRequest();
   Request.Body body = request.body();
   assertEquals("POST", request.method());
   assertEquals("http://example.com", request.urlString());
   assertEquals("application/json; charset=utf-8", body.contentType().toString());
   assertEquals("foo", bodyAsString(body));
 }
コード例 #12
0
  KubernetesClientException requestException(Request request, Exception e) {
    StringBuilder sb = new StringBuilder();
    sb.append("Error executing: ")
        .append(request.method())
        .append(" at: ")
        .append(request.urlString())
        .append(". Cause: ")
        .append(e.getMessage());

    return new KubernetesClientException(sb.toString(), e);
  }
コード例 #13
0
 private OkHttpClient createOkHttpClient() {
   OkHttpClient client = new OkHttpClient();
   client
       .interceptors()
       .add(
           chain -> {
             Request request = chain.request();
             Request newRequest =
                 request.newBuilder().addHeader("Cookie", "auth_token=" + authToken).build();
             return chain.proceed(newRequest);
           });
   return client;
 }
コード例 #14
0
 static String get(Request request, java.net.Proxy.Type type, Protocol protocol) {
   StringBuilder stringbuilder = new StringBuilder();
   stringbuilder.append(request.method());
   stringbuilder.append(' ');
   if (includeAuthorityInRequestLine(request, type)) {
     stringbuilder.append(request.url());
   } else {
     stringbuilder.append(requestPath(request.url()));
   }
   stringbuilder.append(' ');
   stringbuilder.append(version(protocol));
   return stringbuilder.toString();
 }
  @Override
  public Response intercept(Chain chain) throws IOException {
    Request request = chain.request();
    TwitterOauthHelper oauthHelper = TwitterOauthHelper.get();

    try {
      String authHeaderString = oauthHelper.getAuthorizationHeaderString(request);
      request = request.newBuilder().addHeader(AUTH_HEADER, authHeaderString).build();
    } catch (InvalidKeyException | NoSuchAlgorithmException e) {
      Log.e(TAG, "Failed to get auth header string", e);
    }

    return chain.proceed(request);
  }
コード例 #16
0
 @Override
 public Response intercept(Chain chain) throws IOException {
   Request originalRequest = chain.request();
   Request.Builder request = originalRequest.newBuilder();
   if (originalRequest.header("fresh") != null) {
     request.cacheControl(CacheControl.FORCE_NETWORK);
   }
   Response response = chain.proceed(request.build());
   return response
       .newBuilder()
       .removeHeader("Pragma")
       .removeHeader("Cache-Control")
       .header("Cache-Control", cacheControl())
       .build();
 }
コード例 #17
0
ファイル: HttpEngine.java プロジェクト: gdkjrygh/CompSecurity
 private Connection createNextConnection()
 {
     Object obj = client.getConnectionPool();
     do
     {
         Connection connection1 = ((ConnectionPool) (obj)).get(address);
         if (connection1 == null)
         {
             break;
         }
         if (networkRequest.method().equals("GET") || Internal.instance.isReadable(connection1))
         {
             return connection1;
         }
         Util.closeQuietly(connection1.getSocket());
     } while (true);
     try
     {
         obj = new Connection(((ConnectionPool) (obj)), routeSelector.next());
     }
     catch (IOException ioexception)
     {
         throw new RouteException(ioexception);
     }
     return ((Connection) (obj));
 }
コード例 #18
0
ファイル: HttpEngine.java プロジェクト: gdkjrygh/CompSecurity
 private void maybeCache()
 {
     Object obj = Internal.instance.internalCache(client);
     if (obj != null)
     {
         if (!CacheStrategy.isCacheable(userResponse, networkRequest))
         {
             if (HttpMethod.invalidatesCache(networkRequest.method()))
             {
                 try
                 {
                     ((InternalCache) (obj)).remove(networkRequest);
                     return;
                 }
                 // Misplaced declaration of an exception variable
                 catch (Object obj)
                 {
                     return;
                 }
             }
         } else
         {
             storeRequest = ((InternalCache) (obj)).put(stripBody(userResponse));
             return;
         }
     }
 }
コード例 #19
0
 /**
  * @param context
  * @param bundle
  */
 public AbstractBaseOkHttp(@NonNull Context context, @NonNull Bundle bundle) {
   this.context = context;
   this.bundle = bundle;
   printLog = new PrintLog();
   printLog.setRequestTime(
       TimeUtils.getCurrentTimeInString(new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒")));
   request = getRequest();
   printLog.setUrl(request.urlString());
   printLog.setHeaders(
       new StringBuilder()
           .append(CONTENT_TYPE_KEY)
           .append("=")
           .append(request.header(CONTENT_TYPE_KEY))
           .toString());
   execute(getOkHttpClient(), getRequest(), getResponseCallBack());
 }
コード例 #20
0
 private void logRequest(Request request, Response response, String body) throws IOException {
   if (Config.LOGS_ENABLED) {
     String requestString = request.method() + " " + request.urlString();
     if (!request.method().toLowerCase().equals("get")) {
       Buffer buffer = new Buffer();
       request.body().writeTo(buffer);
       requestString += " " + buffer.readUtf8();
     }
     if (response.code() >= 400) {
       LogHelper.d(TAG, "request failed " + requestString);
     } else {
       LogHelper.d(TAG, "request success " + requestString);
     }
     LogHelper.i(TAG, "response = " + response.code() + "  " + body);
   }
 }
コード例 #21
0
  @Override
  protected HttpResponse invoke(Request nativeRequest) throws IOException, InterruptedException {
    OkHttpClient requestScopedClient = globalClient.clone();
    requestScopedClient.setProxy(proxyForURI.apply(nativeRequest.uri()));

    Response response = requestScopedClient.newCall(nativeRequest).execute();

    HttpResponse.Builder<?> builder = HttpResponse.builder();
    builder.statusCode(response.code());
    builder.message(response.message());

    Builder<String, String> headerBuilder = ImmutableMultimap.builder();
    Headers responseHeaders = response.headers();
    for (String header : responseHeaders.names()) {
      headerBuilder.putAll(header, responseHeaders.values(header));
    }

    ImmutableMultimap<String, String> headers = headerBuilder.build();

    if (response.code() == 204 && response.body() != null) {
      response.body().close();
    } else {
      Payload payload = newInputStreamPayload(response.body().byteStream());
      contentMetadataCodec.fromHeaders(payload.getContentMetadata(), headers);
      builder.payload(payload);
    }

    builder.headers(filterOutContentHeaders(headers));

    return builder.build();
  }
コード例 #22
0
 @Override
 protected Call enqueue(Request request, com.squareup.okhttp.Callback requestCallback) {
   Context context = PopcornApplication.getAppContext();
   PackageInfo pInfo;
   String versionName = "0.0.0";
   try {
     pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
     versionName = pInfo.versionName;
   } catch (PackageManager.NameNotFoundException e) {
     e.printStackTrace();
   }
   request =
       request
           .newBuilder()
           .removeHeader("User-Agent")
           .addHeader(
               "User-Agent",
               String.format(
                   "Mozilla/5.0 (Linux; U; Android %s; %s; %s Build/%s) AppleWebkit/534.30 (KHTML, like Gecko) PT/%s",
                   Build.VERSION.RELEASE,
                   LocaleUtils.getCurrent(),
                   Build.MODEL,
                   Build.DISPLAY,
                   versionName))
           .build();
   return super.enqueue(request, requestCallback);
 }
コード例 #23
0
ファイル: RouteSelector.java プロジェクト: Gongcong/okhttp
  /**
   * Returns the next connection to attempt.
   *
   * @throws NoSuchElementException if there are no more routes to attempt.
   */
  Connection nextUnconnected() throws IOException {
    // Always prefer pooled connections over new connections.
    for (Connection pooled; (pooled = pool.get(address)) != null; ) {
      if (request.method().equals("GET") || Internal.instance.isReadable(pooled)) return pooled;
      pooled.getSocket().close();
    }

    // Compute the next route to attempt.
    if (!hasNextTlsVersion()) {
      if (!hasNextInetSocketAddress()) {
        if (!hasNextProxy()) {
          if (!hasNextPostponed()) {
            throw new NoSuchElementException();
          }
          return new Connection(pool, nextPostponed());
        }
        lastProxy = nextProxy();
        resetNextInetSocketAddress(lastProxy);
      }
      lastInetSocketAddress = nextInetSocketAddress();
      resetNextTlsVersion();
    }

    String tlsVersion = nextTlsVersion();
    Route route = new Route(address, lastProxy, lastInetSocketAddress, tlsVersion);
    if (routeDatabase.shouldPostpone(route)) {
      postponedRoutes.add(route);
      // We will only recurse in order to skip previously failed routes. They will be
      // tried last.
      return nextUnconnected();
    }

    return new Connection(pool, route);
  }
コード例 #24
0
  protected String get(String url) throws IOException, ApiException, JSONException {

    String responseString = "";

    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder().url(url).build();

    Response response = client.newCall(request).execute();
    responseString = response.body().string();

    if (!response.isSuccessful()) {
      handleError(response.code(), request.uri() + "", responseString);
    }

    return responseString;
  }
コード例 #25
0
ファイル: HttpEngine.java プロジェクト: gdkjrygh/CompSecurity
 public Response proceed(Request request1)
 {
     calls = calls + 1;
     if (index > 0)
     {
         Interceptor interceptor = (Interceptor)client.networkInterceptors().get(index - 1);
         Address address1 = connection().getRoute().getAddress();
         if (!request1.httpUrl().host().equals(address1.getUriHost()) || request1.httpUrl().port() != address1.getUriPort())
         {
             throw new IllegalStateException((new StringBuilder()).append("network interceptor ").append(interceptor).append(" must retain the same host and port").toString());
         }
         if (calls > 1)
         {
             throw new IllegalStateException((new StringBuilder()).append("network interceptor ").append(interceptor).append(" must call proceed() exactly once").toString());
         }
     }
     if (index >= client.networkInterceptors().size()) goto _L2; else goto _L1
コード例 #26
0
ファイル: HttpEngine.java プロジェクト: gdkjrygh/CompSecurity
 private static Address createAddress(OkHttpClient okhttpclient, Request request)
 {
     com.squareup.okhttp.CertificatePinner certificatepinner = null;
     javax.net.ssl.SSLSocketFactory sslsocketfactory;
     javax.net.ssl.HostnameVerifier hostnameverifier;
     if (request.isHttps())
     {
         sslsocketfactory = okhttpclient.getSslSocketFactory();
         hostnameverifier = okhttpclient.getHostnameVerifier();
         certificatepinner = okhttpclient.getCertificatePinner();
     } else
     {
         hostnameverifier = null;
         sslsocketfactory = null;
     }
     return new Address(request.httpUrl().host(), request.httpUrl().port(), okhttpclient.getSocketFactory(), sslsocketfactory, hostnameverifier, certificatepinner, okhttpclient.getAuthenticator(), okhttpclient.getProxy(), okhttpclient.getProtocols(), okhttpclient.getConnectionSpecs(), okhttpclient.getProxySelector());
 }
コード例 #27
0
ファイル: HttpEngine.java プロジェクト: gdkjrygh/CompSecurity
 private Request networkRequest(Request request)
 {
     com.squareup.okhttp.Request.Builder builder = request.newBuilder();
     if (request.header("Host") == null)
     {
         builder.header("Host", Util.hostHeader(request.httpUrl()));
     }
     if ((connection == null || connection.getProtocol() != Protocol.HTTP_1_0) && request.header("Connection") == null)
     {
         builder.header("Connection", "Keep-Alive");
     }
     if (request.header("Accept-Encoding") == null)
     {
         transparentGzip = true;
         builder.header("Accept-Encoding", "gzip");
     }
     CookieHandler cookiehandler = client.getCookieHandler();
     if (cookiehandler != null)
     {
         java.util.Map map = OkHeaders.toMultimap(builder.build().headers(), null);
         OkHeaders.addCookies(builder, cookiehandler.get(request.uri(), map));
     }
     if (request.header("User-Agent") == null)
     {
         builder.header("User-Agent", Version.userAgent());
     }
     return builder.build();
 }
コード例 #28
0
 /**
  * Prepares the HTTP headers and sends them to the server.
  *
  * <p>For streaming requests with a body, headers must be prepared <strong>before</strong> the
  * output stream has been written to. Otherwise the body would need to be buffered!
  *
  * <p>For non-streaming requests with a body, headers must be prepared <strong>after</strong> the
  * output stream has been written to and closed. This ensures that the {@code Content-Length}
  * header field receives the proper value.
  */
 public void writeRequestHeaders(Request request) throws IOException {
   httpEngine.writingRequestHeaders();
   String requestLine =
       RequestLine.get(
           request,
           httpEngine.getConnection().getRoute().getProxy().type(),
           httpEngine.getConnection().getProtocol());
   httpConnection.writeRequest(request.headers(), requestLine);
 }
コード例 #29
0
 @Override
 public Response intercept(Chain chain) throws IOException {
   Request request = chain.request();
   Optional<String> appAuthHeader = Optional.fromNullable(request.header(X_API_KEY_HEADER));
   if (appAuthHeader.isPresent()) {
     final Request.Builder newRequest = request.newBuilder();
     final String today = getTodayDate();
     newRequest.addHeader(DATE_HEADER, today);
     Signature signature =
         getSigner()
             .sign(
                 request.method(),
                 request.urlString(),
                 Collections.singletonMap(DATE_HEADER, today));
     newRequest.addHeader(AUTHORIZATION_HEADER, signature.toString());
     request = newRequest.build();
   }
   return chain.proceed(request);
 }
コード例 #30
0
  @Override
  public Response intercept(Chain chain) throws IOException {
    Request request = chain.request();

    long t1 = System.nanoTime();
    Logger.v(
        String.format(
            "Sending request %s on %s%n%s", request.url(), chain.connection(), request.headers()));

    Response response = chain.proceed(request);

    long t2 = System.nanoTime();
    Logger.v(
        String.format(
            "Received response for %s in %.1fms%n%s",
            response.request().url(), (t2 - t1) / 1e6d, response.headers()));

    return response;
  }