HTTP-аутентификация с помощью Apache httpcomponents - PullRequest
1 голос
/ 31 мая 2010

Я пытаюсь разработать Java-клиент Java с помощью Apache httpcomponents 4.0.1. Этот клиент вызывает страницу "https://myHost/myPage". Эта страница защищена на сервере с помощью JNDIRealm с аутентификацией в форме входа, поэтому при попытке получить https://myHost/myPage я получаю страницу входа. Я пытался обойти это неудачно со следующим кодом:

//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);

Когда я запускаю этот код, я всегда получаю страницу входа, а не myPage. Как я могу применить свои учетные параметры, чтобы избежать этой формы входа?

Любая помощь была бы фантастической

1 Ответ

1 голос
/ 31 мая 2010

HttpClient не поддерживает форму входа. То, что вы пытаетесь сделать, это Basic Auth, которая не работает с формой входа.

Вы можете просто отследить форму сообщения для страницы входа и отправить запрос POST от HttpClient.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...