Search in sources :

Example 16 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project EhViewer by seven332.

the class CookieRepositoryTest method testGet.

@Test
public void testGet() throws InterruptedException {
    Context app = RuntimeEnvironment.application;
    HttpUrl urlEh1 = HttpUrl.parse("http://www.ehviewer.com/");
    HttpUrl urlEh2 = HttpUrl.parse("http://ehviewer.com/");
    Cookie cookieEh1 = new Cookie.Builder().name("user").value("1234567890").domain("ehviewer.com").path("/").expiresAt(System.currentTimeMillis() + 3000).build();
    Cookie cookieEh2 = new Cookie.Builder().name("level").value("999").domain("www.ehviewer.com").path("/").build();
    Cookie cookieEh3 = new Cookie.Builder().name("speed").value("10").domain("ehviewer.com").path("/").build();
    HttpUrl urlNMB = HttpUrl.parse("http://h.nimingban.com/");
    Cookie cookieNMB = new Cookie.Builder().name("hash").value("0987654321").domain("nimingban.com").path("/").build();
    CookieRepository repository = new CookieRepository(app, "cookie.db");
    repository.saveFromResponse(urlEh1, Arrays.asList(cookieEh1, cookieEh2));
    repository.saveFromResponse(urlEh1, Collections.singletonList(cookieEh3));
    repository.saveFromResponse(urlNMB, Collections.singletonList(cookieNMB));
    equals(Arrays.asList(cookieEh1, cookieEh3), repository.loadForRequest(null));
    Thread.sleep(3000);
    equals(Collections.singletonList(cookieEh3), repository.loadForRequest(null));
    repository.close();
}
Also used : Context(android.content.Context) Cookie(okhttp3.Cookie) HttpUrl(okhttp3.HttpUrl) Test(org.junit.Test)

Example 17 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project BaseProject by fly803.

the class RetrofitRequestManager method genericClient.

public static OkHttpClient genericClient() {
    /**
     * 类型为BASIC,其实日志级别分为4类:NONE、BASIC、HEADERS、BODY。
     *         大家看下我打印出来的日志,就知道这4类的区别了。
     *         1、NONE
     *         没有任何log
     *         2、BASIC
     *         请求/响应行
     *         basic的格式:
     *         --> POST 地址 http/1.1 (0-byte body)
     *         <-- 200 OK 地址 (154ms, unknown-length body)
     *         3、HEADERS
     *         请求/响应行 + 头
     *         4、BODY
     *         请求/响应行 + 头 + 体
     */
    final OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.connectTimeout(5, TimeUnit.SECONDS);
    builder.readTimeout(10, TimeUnit.SECONDS);
    builder.writeTimeout(5, TimeUnit.SECONDS);
    // 错误重连
    builder.retryOnConnectionFailure(true);
    // 新建log拦截器
    final HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {

        @Override
        public void log(String message) {
            Log.w(BaseProjectConfig.TAG, "genericClient log: " + message);
        }
    });
    HttpLoggingInterceptor.Level level = HttpLoggingInterceptor.Level.BASIC;
    loggingInterceptor.setLevel(level);
    if (BaseProjectConfig.isNetRequestInterceptor) {
        // 添加retrofit日志打印 }
        builder.addInterceptor(loggingInterceptor);
    }
    if (BaseProjectConfig.isBaseURLInterceptor) {
        builder.addInterceptor(new BaseUrlInterceptor());
    }
    if (BaseProjectConfig.isHeaderInterceptor) {
        builder.addInterceptor(new HeaderInterceptor());
    }
    OkHttpClient httpClient = builder.build();
    return httpClient;
}
Also used : OkHttpClient(okhttp3.OkHttpClient) HeaderInterceptor(com.cg.baseproject.request.retrofit.interceptor.HeaderInterceptor) GsonBuilder(com.google.gson.GsonBuilder) HttpLoggingInterceptor(okhttp3.logging.HttpLoggingInterceptor) BaseUrlInterceptor(com.cg.baseproject.request.retrofit.interceptor.BaseUrlInterceptor)

Example 18 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project android-diplicity by zond.

the class RetrofitActivity method recreateServices.

protected void recreateServices() {
    AuthenticatingCallAdapterFactory adapterFactory = new AuthenticatingCallAdapterFactory();
    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.addInterceptor(new Interceptor() {

        @Override
        public Response intercept(Chain chain) throws IOException {
            Request toIssue = chain.request().newBuilder().addHeader("Accept", "application/json; charset=UTF-8").addHeader("X-Diplicity-Client-Version", "" + BuildConfig.VERSION_CODE).addHeader("X-Diplicity-Client-Name", "" + CLIENT_NAME).addHeader("X-Diplicity-API-Level", "" + DIPLICITY_API_LEVEL).build();
            if (getLocalDevelopmentMode() && !getLocalDevelopmentModeFakeID().equals("")) {
                HttpUrl url = toIssue.url().newBuilder().addQueryParameter("fake-id", getLocalDevelopmentModeFakeID()).build();
                toIssue = toIssue.newBuilder().url(url).build();
            } else if (!getAuthToken().equals("")) {
                toIssue = toIssue.newBuilder().addHeader("Authorization", "bearer " + getAuthToken()).build();
            }
            Log.d("Diplicity", "" + toIssue.method() + "ing " + toIssue.url());
            return chain.proceed(toIssue);
        }
    });
    builder.connectTimeout(10, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS).readTimeout(10, TimeUnit.SECONDS);
    Gson gson = new GsonBuilder().registerTypeAdapter(Ticker.class, new TickerUnserializer()).registerTypeAdapter(Game.class, new GameUnserializer(this)).create();
    Retrofit retrofit = new Retrofit.Builder().baseUrl(getBaseURL()).addConverterFactory(GsonConverterFactory.create(gson)).addCallAdapterFactory(adapterFactory).client(builder.build()).build();
    gameService = retrofit.create(GameService.class);
    userStatsService = retrofit.create(UserStatsService.class);
    memberService = retrofit.create(MemberService.class);
    rootService = retrofit.create(RootService.class);
    variantService = retrofit.create(VariantService.class);
    optionsService = retrofit.create(OptionsService.class);
    orderService = retrofit.create(OrderService.class);
    phaseService = retrofit.create(PhaseService.class);
    channelService = retrofit.create(ChannelService.class);
    messageService = retrofit.create(MessageService.class);
    phaseResultService = retrofit.create(PhaseResultService.class);
    gameResultService = retrofit.create(GameResultService.class);
    phaseStateService = retrofit.create(PhaseStateService.class);
    gameStateService = retrofit.create(GameStateService.class);
    userConfigService = retrofit.create(UserConfigService.class);
    banService = retrofit.create(BanService.class);
}
Also used : OkHttpClient(okhttp3.OkHttpClient) GsonBuilder(com.google.gson.GsonBuilder) Gson(com.google.gson.Gson) PhaseService(se.oort.diplicity.apigen.PhaseService) GameStateService(se.oort.diplicity.apigen.GameStateService) PhaseResultService(se.oort.diplicity.apigen.PhaseResultService) BanService(se.oort.diplicity.apigen.BanService) Interceptor(okhttp3.Interceptor) GsonBuilder(com.google.gson.GsonBuilder) MemberService(se.oort.diplicity.apigen.MemberService) Request(okhttp3.Request) UserConfigService(se.oort.diplicity.apigen.UserConfigService) IOException(java.io.IOException) TickerUnserializer(se.oort.diplicity.apigen.TickerUnserializer) GameResultService(se.oort.diplicity.apigen.GameResultService) UserStatsService(se.oort.diplicity.apigen.UserStatsService) HttpUrl(okhttp3.HttpUrl) MessageService(se.oort.diplicity.apigen.MessageService) PhaseStateService(se.oort.diplicity.apigen.PhaseStateService) Response(okhttp3.Response) Retrofit(retrofit2.Retrofit) Game(se.oort.diplicity.apigen.Game) GameService(se.oort.diplicity.apigen.GameService) OrderService(se.oort.diplicity.apigen.OrderService)

Example 19 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project okhttp by square.

the class HttpLoggingInterceptor method intercept.

@Override
public Response intercept(Chain chain) throws IOException {
    Level level = this.level;
    Request request = chain.request();
    if (level == Level.NONE) {
        return chain.proceed(request);
    }
    boolean logBody = level == Level.BODY;
    boolean logHeaders = logBody || level == Level.HEADERS;
    RequestBody requestBody = request.body();
    boolean hasRequestBody = requestBody != null;
    Connection connection = chain.connection();
    Protocol protocol = connection != null ? connection.protocol() : Protocol.HTTP_1_1;
    String requestStartMessage = "--> " + request.method() + ' ' + request.url() + ' ' + protocol;
    if (!logHeaders && hasRequestBody) {
        requestStartMessage += " (" + requestBody.contentLength() + "-byte body)";
    }
    logger.log(requestStartMessage);
    if (logHeaders) {
        if (hasRequestBody) {
            // them to be included (when available) so there values are known.
            if (requestBody.contentType() != null) {
                logger.log("Content-Type: " + requestBody.contentType());
            }
            if (requestBody.contentLength() != -1) {
                logger.log("Content-Length: " + requestBody.contentLength());
            }
        }
        Headers headers = request.headers();
        for (int i = 0, count = headers.size(); i < count; i++) {
            String name = headers.name(i);
            // Skip headers from the request body as they are explicitly logged above.
            if (!"Content-Type".equalsIgnoreCase(name) && !"Content-Length".equalsIgnoreCase(name)) {
                logger.log(name + ": " + headers.value(i));
            }
        }
        if (!logBody || !hasRequestBody) {
            logger.log("--> END " + request.method());
        } else if (bodyEncoded(request.headers())) {
            logger.log("--> END " + request.method() + " (encoded body omitted)");
        } else {
            Buffer buffer = new Buffer();
            requestBody.writeTo(buffer);
            Charset charset = UTF8;
            MediaType contentType = requestBody.contentType();
            if (contentType != null) {
                charset = contentType.charset(UTF8);
            }
            logger.log("");
            if (isPlaintext(buffer)) {
                logger.log(buffer.readString(charset));
                logger.log("--> END " + request.method() + " (" + requestBody.contentLength() + "-byte body)");
            } else {
                logger.log("--> END " + request.method() + " (binary " + requestBody.contentLength() + "-byte body omitted)");
            }
        }
    }
    long startNs = System.nanoTime();
    Response response;
    try {
        response = chain.proceed(request);
    } catch (Exception e) {
        logger.log("<-- HTTP FAILED: " + e);
        throw e;
    }
    long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);
    ResponseBody responseBody = response.body();
    long contentLength = responseBody.contentLength();
    String bodySize = contentLength != -1 ? contentLength + "-byte" : "unknown-length";
    logger.log("<-- " + response.code() + ' ' + response.message() + ' ' + response.request().url() + " (" + tookMs + "ms" + (!logHeaders ? ", " + bodySize + " body" : "") + ')');
    if (logHeaders) {
        Headers headers = response.headers();
        for (int i = 0, count = headers.size(); i < count; i++) {
            logger.log(headers.name(i) + ": " + headers.value(i));
        }
        if (!logBody || !HttpHeaders.hasBody(response)) {
            logger.log("<-- END HTTP");
        } else if (bodyEncoded(response.headers())) {
            logger.log("<-- END HTTP (encoded body omitted)");
        } else {
            BufferedSource source = responseBody.source();
            // Buffer the entire body.
            source.request(Long.MAX_VALUE);
            Buffer buffer = source.buffer();
            Charset charset = UTF8;
            MediaType contentType = responseBody.contentType();
            if (contentType != null) {
                charset = contentType.charset(UTF8);
            }
            if (!isPlaintext(buffer)) {
                logger.log("");
                logger.log("<-- END HTTP (binary " + buffer.size() + "-byte body omitted)");
                return response;
            }
            if (contentLength != 0) {
                logger.log("");
                logger.log(buffer.clone().readString(charset));
            }
            logger.log("<-- END HTTP (" + buffer.size() + "-byte body)");
        }
    }
    return response;
}
Also used : Buffer(okio.Buffer) HttpHeaders(okhttp3.internal.http.HttpHeaders) Headers(okhttp3.Headers) Request(okhttp3.Request) Connection(okhttp3.Connection) Charset(java.nio.charset.Charset) IOException(java.io.IOException) EOFException(java.io.EOFException) ResponseBody(okhttp3.ResponseBody) Response(okhttp3.Response) MediaType(okhttp3.MediaType) Protocol(okhttp3.Protocol) RequestBody(okhttp3.RequestBody) BufferedSource(okio.BufferedSource)

Example 20 with Level

use of okhttp3.logging.HttpLoggingInterceptor.Level in project sonarqube by SonarSource.

the class CeHttpClientTest method changeLogLevel_throws_ISE_if_http_error.

@Test
public void changeLogLevel_throws_ISE_if_http_error() {
    String message = "blah";
    server.enqueue(new MockResponse().setResponseCode(500).setBody(message));
    // initialize registration of process
    setUpWithHttpUrl(ProcessId.COMPUTE_ENGINE);
    expectedException.expect(IllegalStateException.class);
    expectedException.expectMessage("Failed to call HTTP server of process " + ProcessId.COMPUTE_ENGINE);
    expectedException.expectCause(hasType(IOException.class).andMessage(format("Failed to change log level in Compute Engine. Code was '500' and response was 'blah' for url " + "'http://%s:%s/changeLogLevel'", server.getHostName(), server.getPort())));
    underTest.changeLogLevel(LoggerLevel.DEBUG);
}
Also used : MockResponse(okhttp3.mockwebserver.MockResponse) Test(org.junit.Test)

Aggregations

Request (okhttp3.Request)14 Response (okhttp3.Response)13 IOException (java.io.IOException)12 ResponseBody (okhttp3.ResponseBody)12 Test (org.junit.Test)12 HttpUrl (okhttp3.HttpUrl)9 RequestBody (okhttp3.RequestBody)8 Charset (java.nio.charset.Charset)7 Headers (okhttp3.Headers)7 OkHttpClient (okhttp3.OkHttpClient)7 MockResponse (okhttp3.mockwebserver.MockResponse)7 Buffer (okio.Buffer)7 BufferedSource (okio.BufferedSource)7 Context (android.content.Context)6 Connection (okhttp3.Connection)6 MediaType (okhttp3.MediaType)6 Protocol (okhttp3.Protocol)6 HttpHeaders (okhttp3.internal.http.HttpHeaders)6 EOFException (java.io.EOFException)5 ArrayList (java.util.ArrayList)5