mirror of
https://github.com/silkimen/cordova-plugin-advanced-http.git
synced 2024-10-06 09:12:13 +08:00
fixed handling of multiple cookies
This commit is contained in:
parent
b3118d5ccd
commit
d90cefcbaa
@ -14,6 +14,8 @@ import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.Iterator;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.github.kevinsawicki.http.HttpRequest;
|
||||
|
||||
abstract class CordovaHttp {
|
||||
@ -122,15 +124,18 @@ abstract class CordovaHttp {
|
||||
|
||||
protected void addResponseHeaders(HttpRequest request, JSONObject response) throws JSONException {
|
||||
Map<String, List<String>> headers = request.headers();
|
||||
Map<String, String> parsed_headers = new HashMap<String, String>();
|
||||
Map<String, String> filteredHeaders = new HashMap<String, String>();
|
||||
|
||||
for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
List<String> value = entry.getValue();
|
||||
|
||||
if ((key != null) && (!value.isEmpty())) {
|
||||
parsed_headers.put(key, value.get(0));
|
||||
filteredHeaders.put(key, TextUtils.join(", ", value));
|
||||
}
|
||||
}
|
||||
response.put("headers", new JSONObject(parsed_headers));
|
||||
|
||||
response.put("headers", new JSONObject(filteredHeaders));
|
||||
}
|
||||
|
||||
protected HashMap<String, String> getStringMapFromJSONObject(JSONObject object) throws JSONException {
|
||||
|
@ -83,13 +83,13 @@ function resolveCookieString(headers) {
|
||||
|
||||
function getSuccessHandler(url, cb) {
|
||||
return function(response) {
|
||||
cookieHandler.setCookie(url, resolveCookieString(response.headers));
|
||||
cookieHandler.setCookieFromString(url, resolveCookieString(response.headers));
|
||||
cb(response);
|
||||
}
|
||||
}
|
||||
|
||||
function getCookieHeader(url) {
|
||||
return { Cookie: cookieHandler.getCookie(url) };
|
||||
return { Cookie: cookieHandler.getCookieString(url) };
|
||||
}
|
||||
|
||||
var http = {
|
||||
|
@ -9,17 +9,42 @@ var store = new WebStorageCookieStore(storage, storeKey);
|
||||
var cookieJar = new ToughCookie.CookieJar(store);
|
||||
|
||||
module.exports = {
|
||||
setCookie: setCookie,
|
||||
getCookie: getCookie,
|
||||
setCookieFromString: setCookieFromString,
|
||||
getCookieString: getCookieString,
|
||||
clearCookies: clearCookies
|
||||
}
|
||||
|
||||
function setCookie(url, cookieStr) {
|
||||
if (!cookieStr) return;
|
||||
cookieJar.setCookieSync(cookieStr, url);
|
||||
function splitCookieString(cookieStr) {
|
||||
var cookieParts = cookieStr.split(',');
|
||||
var splitCookies = [];
|
||||
var processedCookie = null;
|
||||
|
||||
for (var i = 0; i < cookieParts.length; ++i) {
|
||||
if (cookieParts[i].substr(-11, 8) === 'expires=') {
|
||||
processedCookie = cookieParts[i] + ',' + cookieParts[i + 1];
|
||||
i++;
|
||||
} else {
|
||||
processedCookie = cookieParts[i];
|
||||
}
|
||||
|
||||
processedCookie = processedCookie.trim();
|
||||
splitCookies.push(processedCookie);
|
||||
}
|
||||
|
||||
return splitCookies;
|
||||
}
|
||||
|
||||
function getCookie(url) {
|
||||
function setCookieFromString(url, cookieStr) {
|
||||
if (!cookieStr) return;
|
||||
|
||||
var cookies = splitCookieString(cookieStr);
|
||||
|
||||
for (var i = 0; i < cookies.length; ++i) {
|
||||
cookieJar.setCookieSync(cookies[i], url);
|
||||
}
|
||||
}
|
||||
|
||||
function getCookieString(url) {
|
||||
return cookieJar.getCookieStringSync(url);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user