2013-12-16 3 views
0

У меня проблема с cookies, webview. Webview не загружает куки, взятые с DefaultClient. Код работает для более ранних версий API 14, но не для более поздних версий. У меня нет ошибок, но страницы в Webview не загружаются из-за отсутствия файлов cookie.Set Cookies WebView Android api 14

private CookieManager cookieManager; 
private class Connection extends AsyncTask<Oauth2Parameters,Void,HttpResponse> { 
     @Override 
     protected void onPreExecute() { 
      CookieSyncManager.createInstance(AuthorizeTokenFlow2.this); 
      cookieManager = CookieManager.getInstance();  
      SystemClock.sleep(500); 
     }    
     @Override 
     protected HttpResponse doInBackground(Oauth2Parameters... arg0) { 
      HttpResponse response=null; 
      try { 
       //Execute request with DefaultClientHTTP 
       response = getAuthentication(arg0[0].getAppId(),client);     
      } catch (Exception e) { 
       e.printStackTrace(); 
      }   
      return response; 
     }   
     @Override 
     protected void onPostExecute(HttpResponse result) { 
      try { 
       String html=Utility.extractBodyResponse(result);     
       managementCacheCookie(client); 
       webView = (WebView) findViewById(R.id.webView1);   
       WebSettings webSettings = webView.getSettings(); 
       webSettings.setJavaScriptEnabled(true); 
       webSettings.setBuiltInZoomControls(true); 
       webView.setWebViewClient(new WebViewClient(){ 
        @Override 
        public boolean shouldOverrideUrlLoading(WebView view, String url) { 
         view.loadUrl(url); 
         return true;     
        }      
       }); 
       webView.loadData(html, "text/html", null);   
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    } 
    private void managementCacheCookie(DefaultHttpClient client) 
    { 
     List<Cookie> cookies = client.getCookieStore().getCookies();   
     if (! cookies.isEmpty()){ 

      for (Cookie cookie : cookies){     
       Cookie sessionInfo = cookie;  
       String cookieString = sessionInfo.getName() + "=" + sessionInfo.getValue() + "; domain=" + sessionInfo.getDomain();    
       cookieManager.setCookie(sessionInfo.getDomain(), cookieString); 
      }   
      CookieSyncManager.getInstance().sync(); 
      } 
    } 
    private HttpResponse getAuthentication(String idDevice,DefaultHttpClient client) throws Exception {   
    URI website = new URI(Configuration.authorizeAddress); 
    HttpGet request = new HttpGet(); 
    request.addHeader("Authorization", "idDevice "+idDevice); 
    request.setURI(website); 
    HttpResponse response; 
    try{ 
     response = client.execute(request); 
    }catch(HttpHostConnectException htt) 
    { 
     htt.printStackTrace(); 
     throw htt; 
    }    
    return response; 
} 

Спасибо за помощь

ответ

0

я решил, я использую:

String cookieString = sessionInfo.getName() + "=" + sessionInfo.getValue(); 
cookieManager.setCookie(sessionInfo.getDomain(), cookieString); 

Я удалил домен из печенья. Я также добавил:

cookieManager.setAcceptCookie(true);