Android登录和重定向

时间:2013-11-22 10:40:02

标签: java android

我正在尝试从需要在页面中登录的网页获取一些数据。我可以使用htmlunit,但在Android上导入这些库时遇到了问题。所以我试图用apache http client做到这一点。

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("https://inside.cineca.it/cgi-bin/uinside/marcature.pl");
BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("j_username", "user");
BasicNameValuePair passwordBasicNameValuePAir = new BasicNameValuePair("j_password", "pass");

List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
nameValuePairList.add(usernameBasicNameValuePair);
nameValuePairList.add(passwordBasicNameValuePAir);
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);
HttpResponse httpResponse = httpClient.execute(httpPost);
System.out.println(EntityUtils.toString(httpResponse.getEntity()));

但是给了我错误。我很害怕我应该管理重定向,但我不知道如何。如果有人能给我一些建议,我会很高兴。 最好的问候

1 个答案:

答案 0 :(得分:0)

您正在对登录页面执行http POST。也许为您提供服务的服务器返回登录页面并不知道处理帖子。无论如何,我确信你的意图是实际登录。您需要弄清楚应该在哪里发布凭据并处理结果的服务器API。使用Chrome网络探道器快速调查,上述链接的登录API实际位于:https://idp-is.cineca.it/idp/Authn/Multilogin。这是您应该使用的URL,并且您需要POST。

另外,请确保您所做的请求是在非UI线程上完成的,因为这是初学者常犯的错误。