2010-11-18 11 views
9

WebView yükleyen bir uygulama oluşturdum. Giriş yapmak için, web sitesi temel kimlik doğrulaması gerektirir. Varsayılan tarayıcı üzerinden web sitesine erişmeye çalıştığımda, kullanıcı adımı ve şifremi girmemi isteyen bir pop-up kutusu alıyorum.WebView'de Temel Kimlik Doğrulama nasıl kullanılır

Web sitesi uygulamasına başvurumdan erişmeye çalışırsam 401 hatası alıyorum ve açılır pencere yok. Birinin bana yardım edip edemeyeceğini merak ediyordum?

cevap

8

Web sitesi kimlik doğrulaması gerektirir.

Önce hataya tepki:

webview.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
    if (errorCode == 401) { 
     // show alert to enter username and password 
     // then when those are entered in the alert, 
     //  set it through the setHttpAuthUsernamePassword(...) shown below 
     //  and then reload the site 
    } 
    } 
}); 

bu işlevi kullanın kullanıcı ve şifre belirlemesini: WebView.setHttpAuthUsernamePassword()

webview.setHttpAuthUsernamePassword(host, realm, username, password); 

Tüm dizelerdir. Ev sahibi ve alanın anlamı hakkında daha fazla bilgi için yukarıdaki bağlantıya bakın.

Çözüm burada bulunabilir: http://www.mail-archive.com/[email protected]/msg30468.html

@Override 
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { 
    handler.proceed("username", "password"); 
} 
+0

Hızlı yanıt için teşekkürler. Yanılıyorsam düzeltin, Ama webview.setHttpAuthUsernamePassword (host, realm, kullanıcı adı, şifre); , kod içerisinde kullanıcı adı ve şifreyi önceden tanımlamamı gerektirir mi? Uygulamanın nasıl varsayılan tarayıcı gibi bir kullanıcı adı/giriş kutusu açılacağını anlamaya çalışıyordum .. – Kyle

+0

tamam .. bu yazımda nasıl yapılacağını açıklayacağım .. sadece bir saniye. –

+0

Tekrar teşekkürler! Hala 401'i alıyorum, ama çalışmayı denemek için bunu denemeye devam edeceğim. – Kyle

6
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { 
    handler.proceed("USERNAME", "PASSWORD"); 
} 

bence: burada açıklandığı şekilde

+2

Bu yöntemi denedim ve bir karışıklık içinde sona erdi. Bu yöntemi kullanmaktan vazgeçiyorum. Yanlış bir kullanıcı adı veya şifre gönderiyorsanız, kimlik doğrulama başarısız olur ve web görünümü, kimlik doğrulama için yeniden denemeye devam eder. Bu, sunucumun kapatılmasına neden olan sunucuda tekrarlanan api çağrıları oluşturuyordu. Sonsuz döngüden kaçınmak için bir sayaç ve stopLoading() yöntemini kullanmayı düşünebilirsiniz. –