改装android header用户代理未显示在日志中
我做了一个拦截器,并像这样设置了头用户代理改装android header用户代理未显示在日志中,android,android-studio,retrofit,user-agent,Android,Android Studio,Retrofit,User Agent,我做了一个拦截器,并像这样设置了头用户代理 public class UserAgentInterceptor implements Interceptor { private final String userAgent; public UserAgentInterceptor(String userAgent) { this.userAgent = userAgent; } @Override public Response intercept(Chain chain) thr
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();
}
}
我像这样添加log showen
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_和_ARGS。我尝试了RestAdapter.LogLevel.FULL,但在日志上我看不到android studio日志上的用户代理标题
谢谢你的帮助我个人也有同样的问题
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);
}
@覆盖
公共响应拦截(链)引发IOException{
Request original=chain.Request();
Request.Builder requestBuilder=original.newBuilder();
/*日志调试信息*/
Request=requestBuilder.build();
对于(int i=0;i
我还使用了一个允许记录“curl”的curl拦截器,如果您想通过“Postman”之类的工具快速进行测试,这很有用
截取器样本
希望能满足你的需要 什么是RestoflashClientWrapper和OkClient?他们可能会失去俄克拉荷马州的拦截器。我建议在你的拦截器上放置断点,以确保它被调用。我已经这样做了,我确信我通过了拦截器