Was könnte die Ursache für CircularRedirectException beim Zugriff auf eine passwortgeschützte URL mit Apache DefaultHttpClient?

Ich versuche, auf eine Seite zuzugreifen, die eine Authentifizierung erfordert. Also gab ich meinen Benutzernamen und mein Passwort in den code. Und dies ist die unterhalb der Ausgabe-und Fehler-ich bin immer. Aller erste Ausführung der Anfrage http://me.somehost.com/ und ich bekomme die Fehlermeldung wie Caused by: org.apache.http.client.CircularRedirectException: Circular redirect to. Aber es wird dann versucht, Zugriff auf http://me.somehost.com/robots.txt und ich bekomme die Antwort zurück vom server, da es authentifiziert, meinen Benutzernamen und mein Passwort. Die Antwort, die ich erhalte, ist die tatsächliche Antwort, Wenn ich tippe meinen Benutzernamen und mein Passwort in den browser mit diesem link.. Dann, warum es geschieht mit diesem link 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/

Und das ist mein authentication code..

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();
                }

Was ich falsch mache. Da akzeptiert er den Benutzernamen und das Kennwort für einen link, und wirft den Fehler für den zweiten link.. Irgendwelche Vorschläge erwünscht...

  • Dies beantwortet nicht deine Frage, aber ich würde vorschlagen, dass Sie re-Satz den Titel. Wenn Sie nur cut-n-paste Teil des stacktrace Ihre Frage-Titel, dann die meisten Menschen gehen, um diese zu überspringen und ignorieren. Ich würde den Titel mehr beschreibend, wie "Was könnte die Ursache für CircularRedirectException beim Zugriff auf eine passwortgeschützte URL mit Apache DefaultHttpClient?"
  • Perkins habe ich aktualisiert den Titel.. vielen Dank für das lassen mich wissen..Irgendeine Idee, warum es passiert ist??
InformationsquelleAutor arsenal | 2011-07-14
Schreibe einen Kommentar