Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Apache DefaultHttpClient访问受密码保护的URL时,什么可能导致CircularDirectException?_Java_Apache Httpclient 4.x - Fatal编程技术网

Java 使用Apache DefaultHttpClient访问受密码保护的URL时,什么可能导致CircularDirectException?

Java 使用Apache DefaultHttpClient访问受密码保护的URL时,什么可能导致CircularDirectException?,java,apache-httpclient-4.x,Java,Apache Httpclient 4.x,我正在尝试访问需要身份验证的页面。所以我在代码中输入了我的用户名和密码。这是下面的输出和我得到的错误。首先,它执行请求http://me.somehost.com/我得到的错误为,原因是:org.apache.http.client.CircularDirectException:Circular redirect to。但之后它会尝试访问http://me.somehost.com/robots.txt我从服务器上得到响应,因为它验证了我的用户名和密码。如果我使用该链接在浏览器中键入用户名和密

我正在尝试访问需要身份验证的页面。所以我在代码中输入了我的用户名和密码。这是下面的输出和我得到的错误。首先,它执行请求
http://me.somehost.com/
我得到的错误为
,原因是:org.apache.http.client.CircularDirectException:Circular redirect to
。但之后它会尝试访问
http://me.somehost.com/robots.txt
我从服务器上得到响应,因为它验证了我的用户名和密码。如果我使用该链接在浏览器中键入用户名和密码,我得到的响应就是实际响应。。那么为什么这个链接会出现这种情况
http://me.somehost.com/

----------------------------------------
executing requestGET http://qhome.somehost.com/ HTTP/1.1
org.apache.http.client.ClientProtocolException
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:822)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
    at edu.uci.ics.crawler4j.url.WebURL.setURL(WebURL.java:113)
    at edu.uci.ics.crawler4j.crawler.CrawlController.addSeed(CrawlController.java:207)
    at edu.uci.ics.crawler4j.example.advanced.Controller.main(Controller.java:31)
Caused by: org.apache.http.client.CircularRedirectException: Circular redirect to 'http://me.somehost.com/net/pages/Home.xhtml'
    at org.apache.http.impl.client.DefaultRedirectStrategy.getLocationURI(DefaultRedirectStrategy.java:168)
    at org.apache.http.impl.client.DefaultRedirectStrategy.getRedirect(DefaultRedirectStrategy.java:193)
    at org.apache.http.impl.client.DefaultRequestDirector.handleResponse(DefaultRequestDirector.java:1021)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:482)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    ... 5 more
----------------------------------------
executing requestGET http://me.somehost.com/robots.txt HTTP/1.1
HTTP/1.1 200 OK
# TS Application Portfolio: http://cm.somehost.com/cm/
# TS Email ID: qbat.ts.notify@somehost.com
# ITOC Qwiki TS Apps Section:  http://ki.somehost.com/itall/ITOC_Esion#QBAT-TS
User-agent: *
Disallow: /departments/
Disallow: /Mnet/pages/
Disallow: /Mnet/themes/
Disallow: /wps/
 INFO [main] Number of pages fetched per second: 0
----------------------------------------
executing requestGET https://login.somehost.com/siteminderagent/64219/smgetcred.scc?TYPE=16777217&REALM=-SM-somehost%202B7NS3b0k0Fk&TARGET=-SM-http%3a%2f%2fqhome%2esomehost%2ecom%2frobots%2etxt HTTP/1.1
HTTP/1.1 200 OK
# TS Application Portfolio: http://cm.somehost.com/cm/
# TS Email ID: qbat.ts.notify@somehost.com
# ITOC wiki TS Apps Section:  http://ki.somehost.com/itall/ITOC_Escalation#QBAT-TS
User-agent: *
Disallow: /departments/
Disallow: /net/pages/
Disallow: /net/themes/
Disallow: /wps/
这是我的身份验证码

DefaultHttpClient client = null;

        try
        {
            // Set url
            //URI uri = new URI(url.toString());

            client = new DefaultHttpClient();

            client.getCredentialsProvider().setCredentials(
                    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM),
                    new UsernamePasswordCredentials("test", "test"));

            // Set timeout
            //client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);

            URL url1 = new URL (url);
            HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
            connection.setFollowRedirects(true);
            HttpGet request = new HttpGet(url);

            System.out.println("----------------------------------------");
            System.out.println("executing request" + request.getRequestLine());
            HttpResponse response = client.execute(request);
            HttpEntity entity = response.getEntity();


            System.out.println(response.getStatusLine());





                    InputStream content = entity.getContent();
                    BufferedReader in   = 
                        new BufferedReader (new InputStreamReader (content));
                    String line;
                    while ((line = in.readLine()) != null) {
                        System.out.println(line);
                    }
                } catch(Exception e) {
                    e.printStackTrace();
                }
我做错了什么。因为它接受一个链接的用户名和密码,并为第二个链接抛出错误。。如果您有任何建议,我们将不胜感激。

可能会解决同样的问题。您是否尝试过在常规浏览器中点击同一页面,同时使用(我个人最喜欢的)工具监视请求和响应

实际上可能根本没有问题。如果是这种情况,那么可以在客户端参数中设置ALLOW_CIRCULAR_重定向

更新: 为了允许循环重定向,您的代码如下所示

...
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
...

这并不能回答你的问题,但我建议你重新措辞标题。如果你只是剪切粘贴stacktrace的一部分作为你的问题标题,那么大多数人会跳过并忽略它。我会让标题更具描述性,例如,“当使用Apache DefaultHttpClient访问受密码保护的URL时,什么可能导致CircularDirectException?”@Steve Perkins我更新了标题。。谢谢你让我知道…知道为什么会这样吗?谢谢你回复…是的,我正在用firebug检查页面,如果我输入用户名和密码,我会得到回复。但是在firebug中,我得到,对于与302相同的url,临时移动,然后302找到,然后200 OK请求,并且每个请求中的url都是相同的。如何在我的代码中使用此
允许循环重定向
。。。