Я использую API по умолчанию в Eclipse для подключения к серверу по HTTPS. В моем хранилище ключей установлены цепочки сертификатов. Однако Windows это не нравится и выдает certificate chaining error
. На Ubuntu все работает нормально!
Теперь в Windows у меня есть "взлом", который я видел здесь, который в основном создает TrustManager
, который включает все сертификаты. Пока это нормально. Мне придется вернуться к нему позже, но моя текущая проблема заключается в том, что мой код подключается к серверу, аутентифицируется с использованием uc.setRequestProperty("Authorization", "Basic " + encodedLogin);
, но возвращает обратно HTML-код для моей формы, который, как я и думал, входил в систему. первое место. Без этой строки я получаю 403
.
Когда я зашел на сайт в браузере, всплыло окно входа. Когда я вошел в систему, он вошел в меня без проблем. Когда я нажал Cancel
и закрыл окно входа в систему, я перешел к той HTML-форме, которую возвращает мой код. Так что либо мне нужно как-то войти в это всплывающее окно, либо мне нужно пройти аутентификацию во второй раз, чтобы войти в веб-форму. Надеюсь, это достаточно ясное объяснение.
Моя конечная цель, очевидно, состоит в том, чтобы войти в систему и вернуть объект аутентификации обратно в мой код для дальнейшей связи с сайтом. Я просто застрял в этой маленькой чокнутой части на несколько дней! Любая помощь очень ценится!
Я приложил свой код, а также код формы HTML.
Спасибо.
Мой код:
try
{
String login = "MyUser:MyPass";
byte[] encodedLogin = new Base64().encode(login.getBytes());
StringBuilder parsedContentFromUrl = new StringBuilder();
HttpsURLConnection uc = (HttpsURLConnection) webURL.openConnection();
//uc.setRequestProperty("Proxy-Authorization", "Basic " + encodedLogin);
uc.setRequestProperty("Authorization", "Basic " + encodedLogin);
//uc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
uc.connect();
//uc.getInputStream();
BufferedInputStream in = new BufferedInputStream(uc.getInputStream());
//System.out.println(uc.getRequestProperty("WWW-Authenticate"));
int ch;
while ((ch = in.read()) != -1) {
parsedContentFromUrl.append((char) ch);
}
System.out.println(parsedContentFromUrl);
}
catch (IOException e)
{
System.out.println("IOException::"+e.getMessage());
e.printStackTrace();
}
HTML веб-форма
<FORM METHOD=POST ACTION="/mylogin.form">
<FONT SIZE="+2">
<TABLE BORDER="0" WIDTH="400">
<TR>
<TD ALIGN="LEFT"><UL><LI>Username</LI></UL></TD>
<TD><INPUT NAME="username" SIZE="15"></TD>
</TR>
<TR>
<TD ALIGN="LEFT"><UL><LI>Password</LI></UL></TD>
<TD><INPUT TYPE="PASSWORD" NAME="password" SIZE="15"></TD>
</TR>
</TABLE>
</FONT>
<INPUT TYPE="HIDDEN" NAME="login-form-type" VALUE="pwd">
<BR><INPUT TYPE="SUBMIT" VALUE="Login">
</FORM>