Модифицированный заголовок Android-агента не отображается в журнале - PullRequest
0 голосов
/ 06 июня 2018

я делаю перехватчик и устанавливаю заголовок User-Agent как этот

public class UserAgentInterceptor implements Interceptor {

private final String userAgent;

public UserAgentInterceptor(String userAgent) {
    this.userAgent = userAgent;
}

@Override
public Response intercept(Chain chain) throws IOException {
    Request originalRequest = chain.request();
    Request requestWithUserAgent = originalRequest.newBuilder()
            .header("User-Agent", userAgent)
            .build();
    return chain.proceed(requestWithUserAgent);
}

}

, и я добавляю журнал, показанный как это

  private RestAdapter getRestAdapterFromUrl(String url)
{
    OkHttpClient okHttp = new OkHttpClient();
    okHttp.setConnectTimeout(18000, TimeUnit.MILLISECONDS);
    okHttp.setReadTimeout(18000, TimeUnit.MILLISECONDS);

    // On ajoute user agent intercepteur

    okHttp.networkInterceptors().add(new UserAgentInterceptor(VersionUtil.getUserAgent()));


    RestAdapter.Builder builder = new RestAdapter.Builder()
            .setEndpoint(url)
            .setClient(new RestoflashClientWrapper(new OkClient(okHttp)))
            //.setConverter(new retrofit.converter.JacksonConverter(jsonMapperUnwrapped))
            .setConverter(new JacksonConverter(jsonMapper,jsonMapperUnwrapped))
                    //.setRequestInterceptor(new RestoFlashRequest())
            .setLogLevel(RestAdapter.LogLevel.FULL);

    builder.setRequestInterceptor(interceptor);
    builder.setLogLevel(RestAdapter.LogLevel.HEADERS_AND_ARGS).setLog(new AndroidLog("RETROFIT_LOG"));
    return builder.build();
}

, а также вместо этогоRestAdapter.LogLevel.HEADERS_AND_ARGS.я пробовал RestAdapter.LogLevel.FULL, но в журнале я не могу увидеть заголовок User-Agent в журнале android studio?

спасибо за помощь

1 Ответ

0 голосов
/ 31 августа 2018

лично у меня была такая же проблема.

new OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))

И мне пришлось добавить перехватчик, который явно регистрирует заголовки.

@Override
public Response intercept(Chain chain) throws IOException {
    Request original = chain.request();
    Request.Builder requestBuilder = original.newBuilder();
    /*log debug info*/
    Request request = requestBuilder.build();
    for (int i = 0; i < request.headers().size(); i++) {
        Timber.tag("OkHttp").d(String.format("%s: %s", request.headers().name(i), request.headers().value(i)));
    }
    return chain.proceed(request);
}

И я также использую CurlInterceptor, который позволяетзарегистрируйте «curl», что полезно, если вы хотите быстро протестировать с помощью таких инструментов, как «Почтальон».

Пример CurlInterceptor здесь

Надеясь ответить на ваши вопросы!

...