[java] Jersey2 and resttemplate do not correctly send defaultCookies (#4821)

* Java/Jersey2 sends defaultCookies

* Send cookie value instead of [value] (resttemplate)

* Improve the javadoc string
This commit is contained in:
Ties de Kock
2019-12-21 03:15:29 +01:00
committed by William Cheng
parent 3eaafce569
commit 5740348902
7 changed files with 58 additions and 12 deletions

View File

@@ -715,6 +715,13 @@ public class ApiClient {
} }
} }
for (Entry<String, String> entry : defaultCookieMap.entrySet()) {
String value = entry.getValue();
if (value != null) {
invocationBuilder = invocationBuilder.cookie(entry.getKey(), value);
}
}
for (Entry<String, String> entry : defaultHeaderMap.entrySet()) { for (Entry<String, String> entry : defaultHeaderMap.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
if (!headerParams.containsKey(key)) { if (!headerParams.containsKey(key)) {

View File

@@ -659,14 +659,20 @@ public class ApiClient {
} }
} }
/**
* Build cookie header. Keeps a single value per cookie (as per <a href="https://tools.ietf.org/html/rfc6265#section-5.3">
* RFC6265 section 5.3</a>).
*
* @param cookies map all cookies
* @return header string for cookies.
*/
private String buildCookieHeader(MultiValueMap<String, String> cookies) { private String buildCookieHeader(MultiValueMap<String, String> cookies) {
final StringBuilder cookieValue = new StringBuilder(); final StringBuilder cookieValue = new StringBuilder();
String delimiter = ""; String delimiter = "";
for (final Map.Entry<String, List<String>> entry : cookies.entrySet()) { for (final Map.Entry<String, List<String>> entry : cookies.entrySet()) {
for (String value : entry.getValue()) { final String value = entry.getValue().get(entry.getValue().size() - 1);
cookieValue.append(String.format("%s%s=%s", delimiter, entry.getKey(), entry.getValue())); cookieValue.append(String.format("%s%s=%s", delimiter, entry.getKey(), value));
delimiter = "; "; delimiter = "; ";
}
} }
return cookieValue.toString(); return cookieValue.toString();
} }

View File

@@ -699,6 +699,13 @@ public class ApiClient {
} }
} }
for (Entry<String, String> entry : defaultCookieMap.entrySet()) {
String value = entry.getValue();
if (value != null) {
invocationBuilder = invocationBuilder.cookie(entry.getKey(), value);
}
}
for (Entry<String, String> entry : defaultHeaderMap.entrySet()) { for (Entry<String, String> entry : defaultHeaderMap.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
if (!headerParams.containsKey(key)) { if (!headerParams.containsKey(key)) {

View File

@@ -699,6 +699,13 @@ public class ApiClient {
} }
} }
for (Entry<String, String> entry : defaultCookieMap.entrySet()) {
String value = entry.getValue();
if (value != null) {
invocationBuilder = invocationBuilder.cookie(entry.getKey(), value);
}
}
for (Entry<String, String> entry : defaultHeaderMap.entrySet()) { for (Entry<String, String> entry : defaultHeaderMap.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
if (!headerParams.containsKey(key)) { if (!headerParams.containsKey(key)) {

View File

@@ -699,6 +699,13 @@ public class ApiClient {
} }
} }
for (Entry<String, String> entry : defaultCookieMap.entrySet()) {
String value = entry.getValue();
if (value != null) {
invocationBuilder = invocationBuilder.cookie(entry.getKey(), value);
}
}
for (Entry<String, String> entry : defaultHeaderMap.entrySet()) { for (Entry<String, String> entry : defaultHeaderMap.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
if (!headerParams.containsKey(key)) { if (!headerParams.containsKey(key)) {

View File

@@ -647,14 +647,20 @@ public class ApiClient {
} }
} }
/**
* Build cookie header. Keeps a single value per cookie (as per <a href="https://tools.ietf.org/html/rfc6265#section-5.3">
* RFC6265 section 5.3</a>).
*
* @param cookies map all cookies
* @return header string for cookies.
*/
private String buildCookieHeader(MultiValueMap<String, String> cookies) { private String buildCookieHeader(MultiValueMap<String, String> cookies) {
final StringBuilder cookieValue = new StringBuilder(); final StringBuilder cookieValue = new StringBuilder();
String delimiter = ""; String delimiter = "";
for (final Map.Entry<String, List<String>> entry : cookies.entrySet()) { for (final Map.Entry<String, List<String>> entry : cookies.entrySet()) {
for (String value : entry.getValue()) { final String value = entry.getValue().get(entry.getValue().size() - 1);
cookieValue.append(String.format("%s%s=%s", delimiter, entry.getKey(), entry.getValue())); cookieValue.append(String.format("%s%s=%s", delimiter, entry.getKey(), value));
delimiter = "; "; delimiter = "; ";
}
} }
return cookieValue.toString(); return cookieValue.toString();
} }

View File

@@ -642,14 +642,20 @@ public class ApiClient {
} }
} }
/**
* Build cookie header. Keeps a single value per cookie (as per <a href="https://tools.ietf.org/html/rfc6265#section-5.3">
* RFC6265 section 5.3</a>).
*
* @param cookies map all cookies
* @return header string for cookies.
*/
private String buildCookieHeader(MultiValueMap<String, String> cookies) { private String buildCookieHeader(MultiValueMap<String, String> cookies) {
final StringBuilder cookieValue = new StringBuilder(); final StringBuilder cookieValue = new StringBuilder();
String delimiter = ""; String delimiter = "";
for (final Map.Entry<String, List<String>> entry : cookies.entrySet()) { for (final Map.Entry<String, List<String>> entry : cookies.entrySet()) {
for (String value : entry.getValue()) { final String value = entry.getValue().get(entry.getValue().size() - 1);
cookieValue.append(String.format("%s%s=%s", delimiter, entry.getKey(), entry.getValue())); cookieValue.append(String.format("%s%s=%s", delimiter, entry.getKey(), value));
delimiter = "; "; delimiter = "; ";
}
} }
return cookieValue.toString(); return cookieValue.toString();
} }