के बीच साझा सत्र मेरे पास वास्तव में मेरे वेब व्यू में एक लॉग सत्र है। लेकिन मैं वेब से डेटा भेजने और प्राप्त करने के लिए httpclient का भी उपयोग करता हूं। मैंने इंटरनेट पर देखा कि वेबव्यू की सामग्री प्राप्त करना असंभव है, इसलिए मुझे webservice से डेटा प्राप्त करने के लिए अपने httpclient का उपयोग करने की आवश्यकता है।एंड्रॉइड: वेबव्यू और httpclient
समस्या यह है कि यह webservice सत्र का उपयोग करता है ... और मेरा सत्र मेरे वेब व्यू में है, इसलिए httpclient में यह नहीं है और मैं webservice की सामग्री तक नहीं पहुंच सकता।
मुझे इस समस्या के बारे में कई पोस्ट दिखाई देती हैं लेकिन मुझे समाधान समझ में नहीं आया।
यहाँ क्या मैं अपने onPageStarted पर किया था:
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();
}
मैंने देखा कि मैं चीजों को इस तरह का है, इसलिए मुझे आशा है कि उन लोगों के भी सत्र में शामिल हैं कि: (मैं नंबर निकालने के लिए)
__utma=......(number)......;
__utmc=number;
__utmz=number.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);
wt3_eid=%number%number;
wt3_sid=%number
तब मुझे नहीं पता कि इस कुकी को मेरे httpclient में सेट करने के लिए क्या करना है। मुझे लगता है कि कोशिश, कोई सफलता के साथ:
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);
WebView और httpclient अनुरोधों के बीच शेष अंतर जानने के लिए वेबस्कार्ब या फिडलर जैसे प्रॉक्सी के माध्यम से यातायात को रूट करें। – Robert