0

J'ai un serveur solr que j'ai sécurisé avec l'authentification digest dans le fichier web.xml, et j'ai besoin d'appeler solr de java. J'ai lu des tonnes de fils aujourd'hui et j'ai fait beaucoup d'exemples mais pas de chance.apache httpcomponents digérer les échecs d'authentification, ancien httpclient fonctionne

J'ai ce code avec commons-httpclient 3.1 qui fonctionne et je reçois 200 OK.

URL url = new URL(solrUrl); 

    HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager()); 
    httpClient.getState().setCredentials(new AuthScope(url.getHost(), url.getPort(), AuthScope.ANY_SCHEME), 
      new UsernamePasswordCredentials(user, password)); 

    HttpMethod method = new GetMethod(solrUrl); 
    int responseCode = httpClient.executeMethod(method); 
    System.out.println(responseCode); 

Mais lorsque je tente de le faire avec apache httpcomponent 4.2.2 Je reçois toujours un 401 non autorisé. c'est presque identique à l'exemple officiel. J'ai également essayé de le faire avec HttpUrlConnection et d'obtenir toujours le même 401 en tout temps.

Authenticator authenticator = new Authenticator() 
    { 
     protected PasswordAuthentication getPasswordAuthentication() 
     { 
      PasswordAuthentication pa = new PasswordAuthentication(user, password.toCharArray()); 
      System.out.println("calling solr with user:pass " + pa.getUserName() + ":******"); 
      return pa; 
     } 
    }; 

    Authenticator.setDefault(authenticator); 
    try 
    { 
     URL url = new URL(solrUrl); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     conn.setRequestProperty("type", "submit"); 
     conn.setDoOutput(true); 

     conn.connect(); 
    System.out.println(conn.getResponseCode()); 


     conn.disconnect(); 
    } catch (MalformedURLException mue) 
    { 
     mue.printStackTrace(); 
    } catch (IOException ioe) 
    { 
     ioe.printStackTrace(); 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

Je veux utiliser HttpComponents apache 4 en raison de problèmes de classpath, je suis en train de renoncer à ..

toute aide?

Répondre

1

Répondre à moi-même: Apparemment, j'ai frappé une combinaison de bugs + jdk tomcat:

java bug

tomcat bug

est arrivé avec jdk 1.6.0_45-b06 et tomcat 7.0.34 , mise à niveau tomcat à 7.0.41 l'a réparé.

+0

Merci. J'ai insisté sur cela pendant les deux derniers jours et tout ce dont j'avais besoin était d'avoir le dernier matou. – hajime

Questions connexes