Tôi thực sự đã đăng nhập phiên trong WebView của mình. Nhưng tôi cũng sử dụng httpclient để gửi và nhận dữ liệu từ web. Tôi thấy trên internet rằng nó không thể có được nội dung của một WebView, vì vậy tôi cần sử dụng httpclient của tôi để lấy dữ liệu từ một webservice.ANDROID: Chia sẻ phiên giữa Webview và httpclient
Vấn đề là dịch vụ web này sử dụng phiên ... và phiên của tôi nằm trong WebView của tôi, vì vậy httpclient không có nó và tôi không thể truy cập nội dung của webservice.
Tôi thấy nhiều bài đăng về vấn đề này nhưng tôi không hiểu giải pháp.
Dưới đây là những gì tôi đã làm trên onPageStarted tôi:
CookieManager mgr = CookieManager.getInstance();
Log.i("URL", url);
Log.i("Cookie",mgr.getCookie("mywebsite.com"));
String cookie_string = mgr.getCookie("mywebsite.com");
if(cookie_string.length() > 1) {
Data.instance().getPref().edit().putString("cookie",cookie_string).commit();
}
tôi thấy rằng tôi có loại của sự vật, vì vậy tôi hy vọng những người bao gồm phiên quá: (i loại bỏ các số)
__utma=......(number)......;
__utmc=number;
__utmz=number.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);
wt3_eid=%number%number;
wt3_sid=%number
Sau đó, tôi không biết phải làm gì để đặt cookie này trong httpclient của tôi. Tôi cố gắng đó, nhưng không thành công:
HttpClient client = new DefaultHttpClient();
BasicCookieStore cookieStore = new BasicCookieStore();
String login_cookie_string = Data.instance().getPref().getString("cookie", "");
String[] cookie_parts = null;
if(login_cookie_string.length()> 0)
{
//debug_view.setText(login_cookie_string);
Log.d("COOKIE", login_cookie_string);
cookie_parts = login_cookie_string.split(";");
for(int t=0;t < cookie_parts.length;t++)
{
String[] cookieContent = cookie_parts[t].split("=");
Cookie login_cookie = new BasicClientCookie(cookieContent[0],cookieContent[1]);
((BasicClientCookie) login_cookie).setDomain("mywebsite.com");
cookieStore.addCookie(login_cookie);
}
}
((AbstractHttpClient) client).setCookieStore(cookieStore);
Định tuyến lưu lượng truy cập thông qua proxy như WebScarab hoặc Fiddler để tìm ra sự khác biệt còn lại giữa yêu cầu WebView và httpclient. – Robert