gpt4 book ai didi

安卓 : Share session between Webview and httpclient

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:47 38 4
gpt4 key购买 nike

我的 WebView 中实际上有一个已记录的 session 。但我也使用 httpclient 从网络发送和获取数据。我在互联网上看到无法获取 WebView 的内容,因此我需要使用我的 httpclient 从 web 服务获取数据。

问题是这个网络服务使用 session ...而我的 session 在我的 WebView 中,所以 httpclient 没有它,我无法访问网络服务的内容。

我看到很多关于这个问题的帖子,但我不明白解决方案。

这是我在 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();
}

我看到我有这种东西,所以我希望那些也包括 session :(我删除号码)

__utma=......(number)......; 

__utmc=number;

__utmz=number.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);

wt3_eid=%number%number;

wt3_sid=%number

然后我不知道该怎么做才能在我的 httpclient 中设置这个 cookie。我试过了,但没有成功:

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);

最佳答案

所以,这就是我所做的并且对我有用 -

HttpRequestBase request = new HttpGet(uri);
request.addHeader("Cookie", getCookieFromAppCookieManager(uri.toString()));

现在 getCookieFromAppCookieManager 的实现如下 -
该方法从应用程序 CookieManager 获取给定 URL 的 cookie。应用程序 CookieManager 管理应用程序的 WebView 实例使用的 cookie。

@param url the URL for which the cookies are requested
@return value the cookies as a string, using the format of the 'Cookie' HTTP request header
@throws MalformedURLException


public static String getCookieFromAppCookieManager(String url) throws MalformedURLException {
CookieManager cookieManager = CookieManager.getInstance();
if (cookieManager == null)
return null;
String rawCookieHeader = null;
URL parsedURL = new URL(url);

// Extract Set-Cookie header value from Android app CookieManager for this URL
rawCookieHeader = cookieManager.getCookie(parsedURL.getHost());
if (rawCookieHeader == null)
return null;
return rawCookieHeader;
}

关于安卓 : Share session between Webview and httpclient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11224454/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com