Android “;需要授权”;在webview中,即使POST返回200

Android “;需要授权”;在webview中,即使POST返回200,android,post,webview,authorization,Android,Post,Webview,Authorization,我尝试在成功登录后访问一个网页,在那里我获取用户名和密码(从我的应用程序中的EditTextuser=(EditText)findViewById(R.id.user);和pass=(EditText)findViewById(R.id.pass);)并将其发布到服务器 问题在于,webview仅在安装了android 4.2.2的手机/平板电脑上显示文本“需要授权…”(成功登录后),但在4.4.2、4.4.4和5.0.1上运行良好(显示了预期页面) 我的想法快用完了,需要帮助 List<

我尝试在成功登录后访问一个网页,在那里我获取用户名和密码(从我的应用程序中的EditText
user=(EditText)findViewById(R.id.user);
pass=(EditText)findViewById(R.id.pass);
)并将其发布到服务器

问题在于,webview仅在安装了android 4.2.2的手机/平板电脑上显示文本“需要授权…”(成功登录后),但在4.4.2、4.4.4和5.0.1上运行良好(显示了预期页面)

我的想法快用完了,需要帮助

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("user", user.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("password", pass.getText().toString()));

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));
httppost.addHeader("Authorization", "Basic BLA123BLA23BLA32343LSJ");

 // Execute HTTP Post Request    
 response = httpclient.execute();

if (response.getStatusLine().getStatusCode() == 200) {
//WebView                   
    webview_asd = new WebView(MainScreen.this);
    webview_asd = (WebView) findViewById(R.id.webview_asd);
    webview_asd.getSettings().setLoadsImagesAutomatically(true);
    webview_asd.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webview_asd.setWebViewClient( new WebViewClient() );
    webview_asd.getSettings().setJavaScriptEnabled(true);


    CookieSyncManager.createInstance (webview_asd.getContext());

    cookies = ((AbstractHttpClient) httpclient).getCookieStore().getCookies();

    if(cookies != null)
    {
        for(Cookie cookie : cookies)
        {
       cookieString = cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain();                        
       CookieManager.getInstance().setCookie(cookie.getDomain(), cookieString);  
        }
    }

    CookieSyncManager.getInstance().sync();

webview_asd.loadURL(URL);   
webview_asd.setVisibility(View.VISIBLE);
List name-valuepairs=new-ArrayList(2);
添加(新的BasicNameValuePair(“user”,user.getText().toString());
添加(新的BasicNameValuePair(“密码”,pass.getText().toString());
setEntity(新的UrlEncodedFormEntity(nameValuePairs,“utf-8”);
httppost.addHeader(“授权”、“基本BLA123BLA23BLA32343LSJ”);
//执行HTTP Post请求
response=httpclient.execute();
if(response.getStatusLine().getStatusCode()==200){
//网络视图
webview\u asd=新的webview(主屏幕。此);
webview\u asd=(webview)findviewbyd(R.id.webview\u asd);
webview_asd.getSettings().setLoadsImagesAutomatically(true);
webview\u asd.setScrollBarStyle(视图.滚动条\u内部\u覆盖);
webview_asd.setWebViewClient(新的WebViewClient());
webview_asd.getSettings().setJavaScriptEnabled(true);
CookieSyncManager.createInstance(webview_asd.getContext());
cookies=((AbstractHttpClient)httpclient.getCookieStore().getCookies();
如果(cookies!=null)
{
用于(Cookie:cookies)
{
cookieString=cookie.getName()+“=”+cookie.getValue()+”;domain=“+cookie.getDomain();
CookieManager.getInstance().setCookie(cookie.getDomain(),cookieString);
}
}
CookieSyncManager.getInstance().sync();
webview_asd.loadURL(URL);
webview_asd.setVisibility(View.VISIBLE);
(webview显示-“需要授权。此服务器无法验证您是否有权访问请求的文档。可能是您提供了错误的凭据(例如,错误的密码),或者您的浏览器不了解如何提供所需的凭据。”)


稍后编辑:刚刚发现4.2.2不支持HTML5,这就是我遇到这个问题的原因。

我猜该网页需要基本身份验证。使用
WebViewClient
回调
onReceiveDhtPauthRequest。
显示了一个很好的基本示例。

您没有很好地解释代码应该如何使用d工作。请再试一次。你添加了什么?你仍然没有解释什么。你甚至没有提到Cookie。你对它们做了一些非常特殊的事情。你使用http登录,然后在webview中使用它们。现在请详细解释。@greenapps我使用Cookie标准,不认为我做了一些非常特殊的事情。代码很简单:基本的httpPost,添加了一个标题,如果比加载高200,则捕获响应,并显示webview并实现cookies。我是android新手,希望我对它的解释足够好,如果需要添加,我非常欢迎了解更多。我已经尝试过你的方法,但没有任何更改。我想我将尝试实现另一种webview。