httpclient无法处理URL重定向?

时间:2016-09-14 14:32:00

标签: java redirect url-redirection apache-httpclient-4.x

我正在使用HTTPClient 4.3.5版本但看起来像httpclient无法处理url重定向。 在浏览器中如果我添加以下URL

http://www.graybar.com/store/SearchDisplay?categoryId=&storeId=11751&catalogId=10551&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=&beginIndex=0&pageSize=15&searchType=100&orderBy=5&searchTerm=25062903

它被重定向到 http://www.graybar.com/store/en/gb/hubbell-pro-2-pole-15a-125v-heavy-duty-5-15r-duplex-receptacle-smooth-face-25062903

但是在HTTPclient中我得到200 ok但是pagecontent与上面的第二个URL不匹配。 以下是我的代码。请帮助我如何获得第二页内容。

HttpEntity entity=null;
                 HttpGet httpget=null;
                 HttpResponse  response=null;

                 HttpClient httpclient = HttpClientBuilder.create()
                .setRedirectStrategy(new LaxRedirectStrategy()).build();

                 httpget = new HttpGet("http://www.graybar.com/store/SearchDisplay?categoryId=&storeId=11751&catalogId=10551&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=&beginIndex=0&pageSize=15&searchType=100&orderBy=5&searchTerm=25062903");
           httpget.setHeader(HttpHeaders.USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2");
           response = httpclient.execute(httpget);
           entity = response.getEntity();

                 String thirdPartyPageContent=EntityUtils.toString(entity);
                 System.out.println(thirdPartyPageContent);

1 个答案:

答案 0 :(得分:1)

第一个网址返回的网页内容包含javascript。当加载页面(onload)时,浏览器会执行此javascript的部分内容。此部分请求与服务器不同的页面,因此覆盖第一个URL加载的页面。由于HttpClient不解释或执行javascript,因此不会重新加载页面。

服务器返回代码301或302指示正确的http重定向.HttpClient可以遵循这些重定向。