2010-05-31 3 views
1

Je suis en train de développer un client http java avec apache httpcomponents 4.0.1. Ce client appelle la page "https://myHost/myPage". Cette page est protégée sur le serveur par un JNDIRealm avec une authentification par formulaire de connexion, donc quand j'essaye d'obtenir https://myHost/myPage je reçois une page de connexion. J'ai essayé de le contourner, sans succès, avec le code suivant:Http authentification avec apache httpcomponents

//I set my proxy 
HttpHost proxy = new HttpHost("myProxyHost", myProxyPort); 

//I add supported schemes 
SchemeRegistry supportedSchemes = new SchemeRegistry(); 
supportedSchemes.register(new Scheme("http", PlainSocketFactory 
       .getSocketFactory(), 80)); 
supportedSchemes.register(new Scheme("https", SSLSocketFactory 
       .getSocketFactory(), 443)); 

// prepare parameters 
HttpParams params = new BasicHttpParams(); 
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
HttpProtocolParams.setContentCharset(params, "UTF-8"); 
HttpProtocolParams.setUseExpectContinue(params, true); 
ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, 
       supportedSchemes); 
DefaultHttpClient httpclient = new DefaultHttpClient(ccm, params); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, 
       proxy); 

//I add my authentication information 
httpclient.getCredentialsProvider().setCredentials(
new AuthScope("myHost/myPage", 443), 
new UsernamePasswordCredentials("username", "password")); 


HttpHost host = new HttpHost("myHost", 443, "https"); 
HttpGet req = new HttpGet("/myPage"); 

//show the page 
ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
String rsp = httpClient.execute(host, req, responseHandler); 
System.out.println(rsp); 

Quand je lance ce code, je reçois toujours la page de connexion, pas myPage. Comment puis-je appliquer mes paramètres d'identification pour éviter ce formulaire de connexion?

Toute aide serait fantastique

Répondre

1

HttpClient ne prend pas en charge la connexion de formulaire. Ce que vous essayez de faire est Basic Auth, qui ne fonctionne pas avec la connexion au formulaire.

Vous pouvez simplement tracer le message du formulaire pour la page de connexion et envoyer la demande POST depuis HttpClient.

+0

Merci! Je vais essayer ça. – user299957

Questions connexes