Expose Request to ProxyProvider.
parent
244ade7b4c
commit
58fd08bcf8
|
@ -77,7 +77,7 @@ public class HttpClientDownloader extends AbstractDownloader {
|
|||
}
|
||||
CloseableHttpResponse httpResponse = null;
|
||||
CloseableHttpClient httpClient = getHttpClient(task.getSite());
|
||||
Proxy proxy = proxyProvider != null ? proxyProvider.getProxy(task) : null;
|
||||
Proxy proxy = proxyProvider != null ? proxyProvider.getProxy(request, task) : null;
|
||||
HttpClientRequestContext requestContext = httpUriRequestConverter.convert(request, task.getSite(), proxy);
|
||||
Page page = Page.fail();
|
||||
try {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package us.codecraft.webmagic.proxy;
|
||||
|
||||
import us.codecraft.webmagic.Page;
|
||||
import us.codecraft.webmagic.Request;
|
||||
import us.codecraft.webmagic.Task;
|
||||
|
||||
/**
|
||||
|
@ -23,7 +24,23 @@ public interface ProxyProvider {
|
|||
* Get a proxy for task by some strategy.
|
||||
* @param task the download task
|
||||
* @return proxy
|
||||
* @deprecated Use {@link #getProxy(Request, Task)} instead.
|
||||
*/
|
||||
Proxy getProxy(Task task);
|
||||
@Deprecated
|
||||
default Proxy getProxy(Task task) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a proxy for the request.
|
||||
*
|
||||
* @param request the request
|
||||
* @param task the download task
|
||||
* @return proxy
|
||||
* @since 0.9.0
|
||||
*/
|
||||
default Proxy getProxy(Request request, Task task) {
|
||||
return this.getProxy(task);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package us.codecraft.webmagic.proxy;
|
||||
|
||||
import us.codecraft.webmagic.Page;
|
||||
import us.codecraft.webmagic.Request;
|
||||
import us.codecraft.webmagic.Task;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -44,7 +45,7 @@ public class SimpleProxyProvider implements ProxyProvider {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Proxy getProxy(Task task) {
|
||||
public Proxy getProxy(Request request, Task task) {
|
||||
return proxies.get(incrForLoop());
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ public class SimpleProxyProviderTest {
|
|||
Proxy originProxy1 = new Proxy("127.0.0.1", 1087);
|
||||
Proxy originProxy2 = new Proxy("127.0.0.1", 1088);
|
||||
SimpleProxyProvider proxyProvider = SimpleProxyProvider.from(originProxy1, originProxy2);
|
||||
Proxy proxy = proxyProvider.getProxy(TASK);
|
||||
Proxy proxy = proxyProvider.getProxy(null, TASK);
|
||||
assertThat(proxy).isEqualTo(originProxy1);
|
||||
proxy = proxyProvider.getProxy(TASK);
|
||||
assertThat(proxy).isEqualTo(originProxy2);
|
||||
|
|
Loading…
Reference in New Issue