2014-12-18 2 views
4

Мы вызываем URL-адрес, используя настройки прокси-сервера, с помощью отдельного кода примера Java на наших серверах weblogic (node1/node2). Этот код отлично работает на узле 1, но тот же код не работает на сервере node2. Мы уже проверили настройки прокси-сервера и учетные все хорошо, но до сих пор мы получаем следующие ошибки:java.net.Authenticator: java.net.ProtocolException: сервер перенаправлен слишком много раз (20)

java.net.ProtocolException: Server redirected too many times (20) 
     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323) 
     at ProxyCode.start2(ProxyCode.java:54) 
     at ProxyCode.main(ProxyCode.java:23) 
Exception in thread "Main Thread" java.lang.NullPointerException 
     at java.io.Reader.<init>(Reader.java:61) 
     at java.io.InputStreamReader.<init>(InputStreamReader.java:55) 
     at ProxyCode.readFromInputStream(ProxyCode.java:65) 
     at ProxyCode.start2(ProxyCode.java:59) 
     at ProxyCode.main(ProxyCode.java:22) 

Кроме того, пожалуйста, найти свой фрагмент кода ниже: SimpleAuthenticator.java

импорт java.net.Authenticator; импорт java.net.PasswordAuthentication;

public class SimpleAuthenticator extends Authenticator 
{ 
     private String username; 
     private String password; 

     public SimpleAuthenticator(String username,String password) 
     { 
       this.username = username; 
       this.password = password; 
     } 

     protected PasswordAuthentication getPasswordAuthentication() 
     { 
       return new PasswordAuthentication(
         username,password.toCharArray()); 
     } 
} 

Основной класс:

String url = "http://www.oracle.com/technetwork/java/readme-2-149793.txt"; 
    String proxy = "proxyserver"; 
    String port = "8080"; 
    String username = "username"; 
    String password = "password"; 
    Authenticator.setDefault(new SimpleAuthenticator(username,password)); 

    URL server = null; 
    try { 

      CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); 
      server = new URL(url); 
    } 
    catch (MalformedURLException e) { 
      e.printStackTrace(); 
    } 

Properties systemProperties = System.getProperties(); 
    systemProperties.setProperty("http.proxyHost", proxy); 
    systemProperties.setProperty("http.proxyPort", port); 

    InputStream in = null; 
    URLConnection connection = null; 

    try { 
      connection = (URLConnection) server.openConnection(); 
      connection.connect(); 
      in = connection.getInputStream(); 
    } 
    catch (IOException e) { 
      e.printStackTrace(); 
    } 
      System.out.println(readFromInputStream(in)); 
    } 

    public static String readFromInputStream(InputStream in) { 
      StringBuffer strBuf = new StringBuffer(); 
      char ac[]; 
      BufferedReader buf = new BufferedReader(new InputStreamReader(in)); 

     try 
    { 
      while (buf.ready()) { 
        ac = new char[10000]; 
        buf.read(ac); 
        strBuf.append(ac); 
    } 
      buf.close(); 
    } 
    catch (IOException e) { 
      e.printStackTrace(); 
    } 

Мы застряли в этом, так как месяцы, и не в состоянии получить любую полезную информацию в любом месте. добрый help.thanks

+0

Вы использовали инструменты разработчика Firebug или chrome/IE, чтобы узнать, какие редиректы были сделаны? Иногда это может дать представление о том, что происходит. – Simon

+0

Я запускаю его на unix box.and, проверенный с использованием результата CURL, является положительным. Работает, но вызов URL из кода JAVA не работает. – user3134221

+0

Я все еще думаю, что смотреть на то, какие перенаправления сделаны, было бы полезно. http://getfirebug.com/network – Simon

ответ

1

Вы получите эту ошибку, если предоставите неправильные учетные данные (имя пользователя или пароль). Это случилось с веб-приложением на основе Glassfish. Однако я ожидал ответа 401.

Я думаю, что аутентификатор много раз пытается использовать одни и те же учетные данные.

Смежные вопросы