Skip to content

Commit 3c4e713

Browse files
authored
Do not decode URL encoding while setting up RequestTemplate (#2228)
* Do not decode URL encoding while setting up RequestTemplate (#2227) * Add unit test for preserving URL encoding in RequestTemplate (#2227)
1 parent 0112f65 commit 3c4e713

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

core/src/main/java/feign/RequestTemplate.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,8 @@ public RequestTemplate target(String target) {
520520
}
521521

522522
/* strip the query string */
523-
this.target = targetUri.getScheme() + "://" + targetUri.getAuthority() + targetUri.getPath();
523+
this.target =
524+
targetUri.getScheme() + "://" + targetUri.getRawAuthority() + targetUri.getRawPath();
524525
if (targetUri.getFragment() != null) {
525526
this.fragment = "#" + targetUri.getFragment();
526527
}

core/src/test/java/feign/RequestTemplateTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,14 @@ public void fragmentShouldNotBeEncodedInTarget() {
524524
assertThat(template.url()).isEqualTo("https://example.com/path?key1=value1#fragment");
525525
}
526526

527+
@Test
528+
public void urlEncodingRemainsInPlace() {
529+
RequestTemplate template =
530+
new RequestTemplate().method(HttpMethod.GET).target("https://exa%23mple.com/path%7Cpath");
531+
532+
assertThat(template.url()).isEqualTo("https://exa%23mple.com/path%7Cpath");
533+
}
534+
527535
@Test
528536
public void slashShouldNotBeAppendedForMatrixParams() {
529537
RequestTemplate template =

0 commit comments

Comments
 (0)