我的应用程序想要检查用户的登录凭据是否有效以访问Web API。 为此,我使用AsyncTask方法实现了这一点。
这是doInBackground()实现。
protected Boolean doInBackground(String... params) {
HttpURLConnection urlConnection = null;
URL url = null;
try {
url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setConnectTimeout(1000);
urlConnection.setReadTimeout(1000);
Authenticator.setDefault (new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication (user, password.toCharArray());
}
});
return (HttpURLConnection.HTTP_OK == urlConnection.getResponseCode());
} catch (SocketTimeoutException e) {
} catch (IOException e){
}
return false;
}
当我输入正确的用户凭据时,它可以正常工作。但是,当我输入错误的凭据时,它将保持挂在urlConnection.getResponseCode()(不抛出任何异常)。 我试图在其间添加urlConnection.connect(),但我没有找到成功。 我在清单中设置了互联网访问。