相关疑难解决方法(0)

Android上的WebView和Cookies

我在appspot上有一个应用程序,可以通过常规浏览器正常工作,但是当通过Android WebView使用时,它无法设置和读取cookie.我不是想在这个Web应用程序BTW"外面"获取cookie,一旦WebView访问了URL,所有处理,ID等都可以保留在那里,我所需要的只是该应用程序内的会话管理.第一个屏幕也加载正常,所以我知道WebView +服务器的交互性没有被破坏.

我查看了WebSettings类,没有像setEnableCookies这样的调用.

我加载这样的url:

public class MyActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);       
    WebView webview = new WebView(this);
    setContentView(webview);      
    webview.loadUrl([MY URL]);
  }
  .. 
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

java android

51
推荐指数
4
解决办法
11万
查看次数

如何在不在webview中时清除Android上的webview和缓存?

当用户从我的应用程序退出时,我通过调用此方法清除之前从webview缓存的所有内容:

 public void clearCookiesAndCache(Context context){
    CookieSyncManager.createInstance(context);
    CookieManager cookieManager = CookieManager.getInstance();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        cookieManager.removeAllCookies(null);
    }
    else {
        cookieManager.removeAllCookie();
    }        
}
Run Code Online (Sandbox Code Playgroud)

但是,CookieSyncManager被标记为已弃用.但是,如果您之前未加载webview,则需要调用CookieSyncManager.createInstance(context).那么在以前没有加载webview的情况下,如何在不使用已弃用的CookieSyncManager的情况下清除cookie和缓存呢?

android android-webview

51
推荐指数
5
解决办法
6万
查看次数

Android Webview POST

我试图完成一些非常简单的事情,但我没有找到关于此的好文档.我有一个webView,我需要加载一个需要POST数据的页面.看起来像一个简单的过程,但我找不到在webView中显示结果的方法.

这个过程应该很简单:

查询(使用POST数据) - > webserver - > HTML response - > WebView.

我可以使用DefaultHttpClient提交数据,但这不能在WebView中显示.

有什么建议?

非常感谢

private static final String URL_STRING = "http://www.yoursite.com/postreceiver";

    public void postData() throws IOException, ClientProtocolException {  

         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();  
         nameValuePairs.add(new BasicNameValuePair("foo", "12345"));  
         nameValuePairs.add(new BasicNameValuePair("bar", "23456"));

         HttpClient httpclient = new DefaultHttpClient();  
         HttpPost httppost = new HttpPost(URL_STRING);  
         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

         HttpResponse response = httpclient.execute(httppost);  
         String data = new BasicResponseHandler().handleResponse(response);
         mWebView.loadData(data, "text/html", "utf-8");
    }
Run Code Online (Sandbox Code Playgroud)

post android webview

43
推荐指数
3
解决办法
6万
查看次数

在WebView中加载本地html?

我想使用"file:///"将本地html加载到WebView中,因为它不允许使用cookie.有没有办法使用像"localhost"这样的东西?

其次,我找不到在getSettings()中启用cookie的方法.因为使用"file:///"时不允许使用cookie.

android webview

42
推荐指数
3
解决办法
9万
查看次数

使用HttpClient时在活动中使用Cookie

我正在尝试一个简单的应用程序来阅读网站的HTML,并转换它以在Android中创建一个易于阅读的UI(这是一个学习android的exersize,而不是一个可用的应用程序).我遇到的问题是跨活动持久存在用户会话,然后在HttpClient一次召回时使用会话.

我想"正确地"这样做,推荐的方法似乎是使用CookieManager.然而,我遇到了这方面的问题 - 我似乎无法找到"正确"的方式来Cookie从一个单独的活动中CookieManager稍后实例化中使用它HttpClient.

当使用CookieManager我可以保存CookieCookie随后在其他活动(见代码段2)的范围.我在请求页面时没有找到如何使用它(请参阅代码片段3).

够了,这里有一些代码.首先我的登录操作和Cookie存储:

private OnClickListener loginActionListener = new OnClickListener() 
{
    public void onClick(View v) 
    {
        EditText usernameTextView = (EditText) findViewById(R.id.Username);
        EditText passwordTextView = (EditText) findViewById(R.id.Password);
        String username = usernameTextView.getText().toString();
        String password = passwordTextView.getText().toString();

        try {
            HttpPost postMethod = new HttpPost(URI);                
            HttpParams params   = new BasicHttpParams();

            params.setParameter("mode", "login");
            params.setParameter("autologin", true);
            params.setParameter("username", username);
            params.setParameter("password", password);
            postMethod.setParams(params);

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpResponse response …
Run Code Online (Sandbox Code Playgroud)

java cookies android httpclient

26
推荐指数
2
解决办法
4万
查看次数

将Cookie设置为Android中的webView

HttpResponse在检查用户名或密码是否正确时从服务器获取.当我加载url一个webview我想要webView有cookie(我得到的答案postData()存储在webView.我希望webView获取cookie并加载存储在webview中的cookie的URL.

我正在收到回应.

public HttpResponse postData() {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("https://example.com/login.aspx");

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("txtUsername", "user"));
        nameValuePairs.add(new BasicNameValuePair("txtPassword", "123"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);
        String responseAsText = EntityUtils.toString(response.getEntity());
        Log.v(TAG , "Response from req: " + responseAsText);
        return responseAsText;

    } catch (ClientProtocolException e) {

    } catch (IOException e) {

    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我用loadUrl:

webView.loadUrl("http://a_page.com/getpage.aspx?p=home");
Run Code Online (Sandbox Code Playgroud)

我想我不是真正管理一个cookie,我不知道该怎么做.任何建议或解决方案?

cookies post android http

19
推荐指数
5
解决办法
7万
查看次数

Android CookieManager setCookie没有设置任何内容

在我的应用程序中,我从HttpGet请求获取两个cookie并将它们存储在CookieManager中,如下所示:

//Clear old cookies
CookieManager.getInstance().removeAllCookie();
CookieSyncManager.getInstance().sync();

//Save the two cookies: auth token and session info
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        String cookieString = cookie.getName() + "=" + cookie.getValue() + "; Domain=" + cookie.getDomain();
        CookieManager.getInstance().setCookie("http://alpha.mydomainname.com", cookieString);
    }

    System.out.println(CookieManager.getInstance().hasCookies()); //Prints false in 2.3,  true in 4.0.3

    CookieSyncManager.getInstance().sync();

    System.out.println(CookieManager.getInstance().hasCookies()); //Also prints false in 2.3 and true in 4.0.3
}
Run Code Online (Sandbox Code Playgroud)

我在两个不同的设备中测试相同的代码,有趣的是,在4.0.3中正确设置了cookie(并且在应用程序的启动之间也是如此),而不是在2.3.3中.当我说它们没有设置时,我的意思是hasCookies()返回false,并且当我提供URL时getCookie()返回null.

我在调用setCookie时尝试了Cookie URL的所有可能组合:"http://alpha.mydomainname.com","http://www.mydomainname.com","http://mydomainname.com"," mydomainname.com","alpha.mydomainname.com",".mydomainname.com","www.mydomainname.com",它们都不起作用.请帮忙.

cookies android

15
推荐指数
3
解决办法
2万
查看次数

在WebView android中设置Cookies

我正在尝试设置一些cookie WebView来打开一个浏览器,其浏览器与我在我的应用程序上的会话相同.

我读了很多答案,但它们对我不起作用.我发现的唯一解决方案是loadUrl对cookie数据进行硬编码extraHeaders,但正如预期的那样,这仅适用于此请求,并且不会维护会话.

我的代码是:

CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie("http://xx.xxx.example.com","mid="+MySession.GetSession().sessionId+" ; Domain=.example.com");
cookieSyncManager.sync();

String cookie = cookieManager.getCookie("http://xx.xxx.example.com");

Log.d(LOGTAG, "cookie ------>"+cookie);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new TuWebViewClient());
mWebView.loadUrl("http://xx.xx.example.com");
Run Code Online (Sandbox Code Playgroud)

getCookie()返回正确的数据,但是当我从服务器读取cookie时,这些是空的.怎么了?请指教.谢谢!!!

cookies android

14
推荐指数
2
解决办法
3万
查看次数

如何在android WebView客户端中设置cookie

我想通过WebView调用一个特定的URL .该页面只能在用户登录后调用.我使用AsyncHttpClient库执行登录调用.成功登录后,通过WebView加载URL 似乎无法识别正确的标头esp cookie.我怀疑是在HttpClientWebView的HttpClient之间cookie没有正确同步.知道为什么吗?.这是我如何使用WebView

    final WebView webView = (WebView) content.findViewById(R.id.web_travel_advisory);
    String url = "http://mydomainurl.com/get_data_after_login";

    webView.setWebViewClient(new WebViewClient());

    CookieSyncManager.createInstance(getActivity());
    CookieSyncManager.getInstance().startSync();
    CookieManager.getInstance().setAcceptCookie(true);

    webView.getSettings().setJavaScriptEnabled(true);

    webView.loadUrl(url);
Run Code Online (Sandbox Code Playgroud)

感谢你的帮助.

cookies android webview asynchttpclient

12
推荐指数
1
解决办法
4万
查看次数

Chrome自定义标签CookieManager

我有一个应用程序使用cookie来提供authcode来获取OAuth流的令牌.我查看了Android开发者网站,它说CookieManager与WebView实例一起使用.这是否意味着Chrome自定义标签无法使用CookieManager?

先感谢您.

詹姆士

chrome-custom-tabs

8
推荐指数
1
解决办法
1739
查看次数

Android webview cookie返回null

我想在android中的webview中设置和检索一个cookie.我已经尝试了许多cookie管理器脚本来尝试让它工作.我启用了JavaScript.

在Samsung S3和Samsung Galaxy Tab 10.1上运行应用程序时,似乎根本没有设置cookie(android 4.1).但是,当在三星Galaxy ace,HTC Desire Z和Android模拟器上运行软件时,cookie被设置并读取完全正常.

工作时,webview按预期返回字符串,当不工作时,输出只是"null"; cookie没有值/没有设置.

我的具体情况也使用了滑动导航类,它是Actionbar Sherlock的扩展.

我真的很感激任何帮助,我几周来一直在努力解决这个问题.谢谢.

HTML:

<html>
<head>
    <title>
    </title>
<script>
    function createCookie(name, value) 
    {
            var day  = (1 * 24 * 60 * 60 * 1000);
            var date = new Date();
            date.setTime(date.getTime() + (20 * 365 * day));
            var expires = "; expires=" + date.toGMTString();

            document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
            document.cookie = name + "=" + value + expires + "; path=/";
    } …
Run Code Online (Sandbox Code Playgroud)

javascript java cookies android webview

6
推荐指数
1
解决办法
6108
查看次数