Сначала - пожалуйста, не называйте свою PostMethod
переменную get
.
Во-вторых, попробуйте это:
PostMethod post = new PostMethod("yourUrl")
{
@Override
public boolean getFollowRedirects()
{
return true;
}
};
Если вы когда-нибудь оказались на «другой стороне» и хотите предотвратить страдания своих пользователей, используйте код ответа 303 (See Other)
при перенаправлении запроса POST
на GET
вместо общего 302
и 301
(за RFC ). Обычные браузеры, как правило, хороши, нарушают правила и НЕ просят нас подтвердить эти перенаправления, но многие мобильные браузеры все еще делают.
Что касается вашего вопроса об аутентификации на основе форм - вам просто нужно выяснить имена параметров для использования (например, посмотрев на источник веб-сайта, на котором вы обычно входите в систему), а затем заполните их соответствующими значения:
post.addParameter("username", username);
post.addParameter("password", password);
Я поиграл с формой входа на myoffice.bt.com, в JavaScript происходит несколько вещей.
Форма отправлена на https://myoffice.bt.com/siteminderagent/forms/login.fcc
Представленные элементы формы были следующими (name=value
, некоторые значения были пустыми):
Segment=btb.hub
SubSegment=
searchType=0
searchPlatform=BEA
lob=btb.hub
queryText=
searchText=
ctl00$masterWebpartManager$gwpCustomLogin1$CustomLogin1$UserName=your@email.com
ctl00$masterWebpartManager$gwpCustomLogin1$CustomLogin1$PWD=yourpwd
ctl00$masterWebpartManager$gwpCustomLogin1$CustomLogin1$RememberMe=on
USER=your@email.com
PASSWORD=yourpwd
SMENC=ISO-8859-1
SMLOCALE=US-EN
userFirstLoginUrl=https://myoffice.bt.com/ManageBusinessApplications/SecretQA.aspx
PrivateLoginSuccessUrl=https://myoffice.bt.com/sm/privatecreatesession.aspx?siteArea=btb.mya
PublicLoginSuccessUrl=https://myoffice.bt.com/sm/createsession.aspx?siteArea=btb.mya
target=https://myoffice.bt.com/sm/privatecreatesession.aspx?siteArea=btb.mya&TARGET=https%3a%2f%2fmyoffice.bt.com%2fdefault.aspx (hidden)
submitStatus=
smauthreason=
smagentname=
postpreservationdata=
AnonUserName=anon@myoffice.bt.com
authMode=SITEMINDER
smUrl=https://myoffice.bt.com/siteminderagent/forms/login.fcc
notSMUrl=https://myoffice.bt.com/default.aspx
smIdentifier=1
Попробуйте добавить некоторые или все из них (по крайней мере USER
и PASSWORD
) к вашему PostMethod
и убедитесь, что вы отправляете на правильный URL-адрес.