在实践中,因为所有访问接口,但接口有频率限制,次数太多或频率太快,接口就会返回错误,常见错误有429(请求太多),或503(服务不可用)。为解决这个问题,采用多线程方式,然后为每个线程分配代理ip。
http请求采用okhttp:
依赖:
compile group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.11.0'
//集成管理Cookie实现
compile group: 'com.squareup.okhttp3', name: 'okhttp-urlconnection', version: '3.11.0'
设置代理:
OkHttpClient.Builder builder = new OkHttpClient.Builder();
//设置连接超时时间
builder.connectTimeout(1, TimeUnit.MINUTES);
//设置代理,需要替换
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(hostName, port));
builder.proxy(proxy);
//cookie管理器
CookieManager cookieManager = new CookieManager();
OkHttpClient client = builder
.cookieJar(new JavaNetCookieJar(cookieManager))
.build();
Request cookieRequest = new Request.Builder()
.headers(headers)
.url("https://www.test.com/")
.get()
.build();
Response execute = client.newCall(cookieRequest).execute();
execute.close();