0

我在以 ASP.NET 作为后端的 Andriod 和 Iphone 中有本机应用程序。我通过使用 HttpClient 类附加 Session_Id cookie 向我的 ASP.NET 服务器 API 发送请求,效果很好。但我还需要在 WebView 中发送相同的会话。问题是 WebView 有时会发送 Session_Id cookie,有时不会。这对我来说很奇怪。我无法找到为什么有时 webview 会发送 cookie 而有时却不会。这是我的代码,

 @Override
 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  myapp = ((....) getApplicationContext());
  setTimeout(true);
  try {
   getActionBarHelper().setupHomeActivity();

  } catch (Exception e) {
   e.printStackTrace();
  }

  cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
  webView = new CustomWebView(this, this);
  webView.getWebView().addJavascriptInterface(new MyJavaScriptInterface(), "android");
  getTimeDiff();

  if(MyApplication.INSTANCE.isLoggedin()){
    Cookie sessionCookie = MyApplication.INSTANCE.getCookie();

    List<Cookie> cookies = MyApplication.INSTANCE.getClient().getCookieStore().getCookies();
    for (int i = 0; i < cookies.size(); i++) {
        sessionCookie = cookies.get(i);
    }

  try{
    if(sessionCookie!=null){

        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        if (sessionCookie != null) {
            cookieManager.removeSessionCookie();
            String cookieString = sessionCookie.getName() + "="
                    + sessionCookie.getValue() + "; domain="
                    + sessionCookie.getDomain();

            if (MyApplication.isDebug())

            cookieManager.setCookie(sessionCookie.getDomain(),(sessionCookie.getName() + "=" + sessionCookie.getValue()));
            CookieSyncManager.getInstance().sync();
    }else{
    if (MyApplication.isDebug())
        Log.d("WebView", " Cookie is null: " );
    }
    }else{
    if (MyApplication.isDebug())
        Log.d("WebView", " Cookie is null: " );
    }
  }catch (Exception e) {
   e.printStackTrace();
  }

  Log.e("WenView", "============================ ");

  }

    }
4

1 回答 1

1

您的 for 循环似乎只包含检索 cookie 的单行......所以您设置下面 cookie 的逻辑只被调用一次,无论最后一个 cookie 是什么。由于 cookie 没有在列表中排序,这可能解释了为什么有时它有效而有时无效;它在您的 cookie 最后一个时有效,否则失败。

答案是扩展你的 for 循环以包含下面的所有逻辑。您的复制代码看起来不错,我希望您有时可以让它工作。

于 2013-09-05T15:28:22.660 回答