mirror of
https://github.com/silkimen/cordova-plugin-advanced-http.git
synced 2024-10-06 17:22:12 +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.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.github.kevinsawicki.http.HttpRequest;
|
import com.github.kevinsawicki.http.HttpRequest;
|
||||||
|
|
||||||
abstract class CordovaHttp {
|
abstract class CordovaHttp {
|
||||||
@ -122,15 +124,18 @@ abstract class CordovaHttp {
|
|||||||
|
|
||||||
protected void addResponseHeaders(HttpRequest request, JSONObject response) throws JSONException {
|
protected void addResponseHeaders(HttpRequest request, JSONObject response) throws JSONException {
|
||||||
Map<String, List<String>> headers = request.headers();
|
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()) {
|
for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
|
||||||
String key = entry.getKey();
|
String key = entry.getKey();
|
||||||
List<String> value = entry.getValue();
|
List<String> value = entry.getValue();
|
||||||
|
|
||||||
if ((key != null) && (!value.isEmpty())) {
|
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 {
|
protected HashMap<String, String> getStringMapFromJSONObject(JSONObject object) throws JSONException {
|
||||||
|
@ -83,13 +83,13 @@ function resolveCookieString(headers) {
|
|||||||
|
|
||||||
function getSuccessHandler(url, cb) {
|
function getSuccessHandler(url, cb) {
|
||||||
return function(response) {
|
return function(response) {
|
||||||
cookieHandler.setCookie(url, resolveCookieString(response.headers));
|
cookieHandler.setCookieFromString(url, resolveCookieString(response.headers));
|
||||||
cb(response);
|
cb(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCookieHeader(url) {
|
function getCookieHeader(url) {
|
||||||
return { Cookie: cookieHandler.getCookie(url) };
|
return { Cookie: cookieHandler.getCookieString(url) };
|
||||||
}
|
}
|
||||||
|
|
||||||
var http = {
|
var http = {
|
||||||
|
@ -9,17 +9,42 @@ var store = new WebStorageCookieStore(storage, storeKey);
|
|||||||
var cookieJar = new ToughCookie.CookieJar(store);
|
var cookieJar = new ToughCookie.CookieJar(store);
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
setCookie: setCookie,
|
setCookieFromString: setCookieFromString,
|
||||||
getCookie: getCookie,
|
getCookieString: getCookieString,
|
||||||
clearCookies: clearCookies
|
clearCookies: clearCookies
|
||||||
}
|
}
|
||||||
|
|
||||||
function setCookie(url, cookieStr) {
|
function splitCookieString(cookieStr) {
|
||||||
if (!cookieStr) return;
|
var cookieParts = cookieStr.split(',');
|
||||||
cookieJar.setCookieSync(cookieStr, url);
|
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);
|
return cookieJar.getCookieStringSync(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user