Меня интересует способ программно войти в OWA (Microsoft Outlook Web Access - почтовый клиент на основе веб-интерфейса) из кода Java и получить не что иное, как счетчик непрочитанных входящих сообщений - я могу прочитать этот номер из папки входящих сообщений HTML-код страницы - но проблема там - вход в систему.
По сути, просматривая исходный код HTML страницы входа в OWA, я вижу, что есть элемент формы HTML:
<form action="owaauth.dll" method="POST" name="logonForm" autocomplete="off">
, который отправляется элементом кнопки внутри него:
<input type="submit" class="btn" value="Log On" onclick="clkLgn()">
Из исследования скрипта clkLgn () я обнаружил, что он отправляет файл cookie в документ, поэтому он может не иметь решающего значения:
function clkLgn()
{
if(gbid("rdoPrvt").checked)
{
var oD=new Date();
oD.setTime(oD.getTime()+2*7*24*60*60*1000);
var sA="acc="+(gbid("chkBsc").checked?1:0);
var sL="lgn="+gbid("username").value;
document.cookie="logondata="+sA+"&"+sL+";expires="+oD.toUTCString();
}
}
Как я могу отправить эту форму?
Следующий код - моя попытка решить проблему, я могу установить HTTP-соединение, но, похоже, я не могу POST выполнить правильный HTTP-запрос.
URL urlObject = new URL(url);
HttpURLConnection hConnection = (HttpURLConnection)urlObject.openConnection();
HttpURLConnection.setFollowRedirects(true);
hConnection.setDoOutput(true);
hConnection.setRequestMethod("POST");
PrintStream ps = new PrintStream(hConnection.getOutputStream());
ps.print("username="+username+"&password="+password);
ps.close();
hConnection.connect();
if( HttpURLConnection.HTTP_OK == hConnection.getResponseCode() )
{
InputStream is = hConnection.getInputStream();
OutputStream os = new FileOutputStream("output.html");
int data;
while((data=is.read()) != -1)
{
os.write(data);
}
is.close();
os.close();
hConnection.disconnect();
}
Он просто возвращает ту же HTML-страницу входа в систему.