From 3ee00015c2feae21838756fe9155e18288518e11 Mon Sep 17 00:00:00 2001 From: "yihua.huang" Date: Sat, 17 Jun 2017 16:08:39 +0800 Subject: [PATCH] change header from Authorization to Proxy-Authorization for Proxy Authorization #596 --- .../downloader/HttpUriRequestConverter.java | 3 ++- .../downloader/HttpClientDownloaderTest.java | 23 +++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpUriRequestConverter.java b/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpUriRequestConverter.java index 354f29e..af2fef4 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpUriRequestConverter.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/downloader/HttpUriRequestConverter.java @@ -2,6 +2,7 @@ package us.codecraft.webmagic.downloader; import org.apache.http.HttpHost; import org.apache.http.auth.AuthState; +import org.apache.http.auth.ChallengeState; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CookieStore; import org.apache.http.client.config.CookieSpecs; @@ -41,7 +42,7 @@ public class HttpUriRequestConverter { HttpClientContext httpContext = new HttpClientContext(); if (proxy != null && proxy.getUsername() != null) { AuthState authState = new AuthState(); - authState.update(new BasicScheme(), new UsernamePasswordCredentials(proxy.getUsername(), proxy.getPassword())); + authState.update(new BasicScheme(ChallengeState.PROXY), new UsernamePasswordCredentials(proxy.getUsername(), proxy.getPassword())); httpContext.setAttribute(HttpClientContext.PROXY_AUTH_STATE, authState); } if (request.getCookies() != null && !request.getCookies().isEmpty()) { diff --git a/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java b/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java index 3f9c838..1c8efc5 100644 --- a/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java +++ b/webmagic-core/src/test/java/us/codecraft/webmagic/downloader/HttpClientDownloaderTest.java @@ -10,7 +10,6 @@ import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; -import org.junit.Ignore; import org.junit.Test; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Request; @@ -255,15 +254,21 @@ public class HttpClientDownloaderTest { }); } - @Ignore("need proxy server") @Test - public void test_download_by_SimpleProxyProvider(){ - HttpClientDownloader httpClientDownloader = new HttpClientDownloader(); - httpClientDownloader.setProxyProvider(SimpleProxyProvider.from(new Proxy("127.0.0.1", 1087))); - Request request = new Request(); - request.setUrl("https://www.baidu.com"); - Page page = httpClientDownloader.download(request, Site.me().toTask()); - assertThat(page.isDownloadSuccess()); + public void test_download_auth_by_SimpleProxyProvider() throws Exception { + HttpServer server = httpServer(13423); + server.get(eq(header("Proxy-Authorization"), "Basic dXNlcm5hbWU6cGFzc3dvcmQ=")).response("ok"); + Runner.running(server, new Runnable() { + @Override + public void run() throws Exception { + HttpClientDownloader httpClientDownloader = new HttpClientDownloader(); + httpClientDownloader.setProxyProvider(SimpleProxyProvider.from(new Proxy("127.0.0.1", 13423, "username", "password"))); + Request request = new Request(); + request.setUrl("http://www.baidu.com"); + Page page = httpClientDownloader.download(request, Site.me().toTask()); + assertThat(page.getRawText()).isEqualTo("ok"); + } + }); } }