Problem z podstawowym uwierzytelnieniem HTTP na Androidzie Jelly Bean 4.1 przy użyciu HttpURLConnection
Wykonujemy żądanie oparte na HttpURLConnection na serwerze sieci Web przy użyciu podstawowego uwierzytelniania HTTP. Kod działa świetnie na Androidzie w wersji 2.x, 3.x., 4.0.x Teraz uwierzytelnianie Jelly Bean i v4.1.x kończy się niepowodzeniem z następującymi komunikatami w LogCat:
01-27 10:54:18.886: ...::doReadRawData(731): An exception occured while reading data from remote host. httpURLConn.responseCode = 401 / httpURLConn.responseMessage = UNAUTHORIZED
01-27 10:54:18.886: ...::doReadRawData(731): java.io.IOException: No authentication challenges found
Kod uwierzytelniania, którego używamy dla HttpURLConnection jak w dokumentacji Androida:
private void doAuthorize() {
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USER, PASSWORD.toCharArray());
}
});
}
Po dalszych badaniach i rozwiązaniu problemów dowiedzieliśmy się, że ten kod nie jest wywoływany w 4.1 Jelly Bean!
Jakie są obejścia lub właściwe sposoby podstawowego uwierzytelniania w systemie Android Jelly Bean 4.1?
Ktoś znalazł inny kod źródłowy Androida w tym pokrewnym temacie, myślę, że problem, który mamy, jest związany z tą różnicą:HttpURLConnection działało dobrze w systemie Android 2.x, ale NIE w wersji 4.1: nie znaleziono wyzwań związanych z uwierzytelnianiem