![](/img/trans.png)
[英]How to change WebView User-Agent randomly on android app?
[英]What is the best way to change the default User Agent for an android app for network request by an external API?
我目前正在开发我的第一个应用程序,但我在网络和开发方面的经验并不丰富,所以我可以寻求一些帮助。 正如问题所述,我需要为所有网络请求设置自定义用户代理,但我遇到了问题。 我设置了一个 okHTTP 中断,但这似乎不起作用。
我的 okHTTP 代码是这样的:
static class UserAgentInterceptor implements Interceptor{
public String useragent;
public UserAgentInterceptor(String useragent){
this.useragent = useragent;
}
public UserAgentInterceptor() {
this(String.format(Locale.US,
"%s/%s (Android %s; %s; %s %s; %s)",
"MY APP HERE",
"3.9",
Build.VERSION.RELEASE,
Build.MODEL,
Build.BRAND,
Build.DEVICE,
Locale.getDefault().getLanguage()));
}
@NotNull
@Override
public Response intercept(Chain chain) throws IOException {
Request userAgentRequest = chain.request()
.newBuilder()
.header("User-Agent", useragent)
.build();
return chain.proceed(userAgentRequest);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
new UserAgentInterceptor();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
我认为在我的应用程序中实现 okHTTP 没有任何问题(我正确地将实现放在我的 build.gradle 文件中),所以问题一定在其他地方。
我可能是错的,但我认为这是因为我的应用程序不是发出 http 请求,而是一个外部 API。 再一次,让我说这只是我的理论,为什么它不起作用。 如果这确实是我遇到此错误的原因,是否有办法解决此问题(也许是改造)?
我感谢您对这个问题的任何帮助,以及对 Retrofit 实际用途的解释,因为我对此也不太确定。 谢谢你。
您需要使用addInterceptor
将拦截器添加到客户端
https://square.github.io/okhttp/interceptors/#application-interceptors
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();
Request request = new Request.Builder()
.url("http://www.publicobject.com/helloworld.txt")
.header("User-Agent", "OkHttp Example")
.build();
Response response = client.newCall(request).execute();
response.body().close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.