Skip to content

Commit 96a6bbd

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 8002055 commit 96a6bbd

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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ public RequestTemplate target(String target) {
518518
}
519519

520520
/* strip the query string */
521-
this.target = targetUri.getScheme() + "://" + targetUri.getAuthority() + targetUri.getPath();
521+
this.target = targetUri.getScheme() + "://" + targetUri.getRawAuthority() + targetUri.getRawPath();
522522
if (targetUri.getFragment() != null) {
523523
this.fragment = "#" + targetUri.getFragment();
524524
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,15 @@ public void fragmentShouldNotBeEncodedInTarget() {
514514
assertThat(template.url()).isEqualTo("https://example.com/path?key1=value1#fragment");
515515
}
516516

517+
@Test
518+
public void urlEncodingRemainsInPlace() {
519+
RequestTemplate template = new RequestTemplate()
520+
.method(HttpMethod.GET)
521+
.target("https://exa%23mple.com/path%7Cpath");
522+
523+
assertThat(template.url()).isEqualTo("https://exa%23mple.com/path%7Cpath");
524+
}
525+
517526
@Test
518527
public void slashShouldNotBeAppendedForMatrixParams() {
519528
RequestTemplate template = new RequestTemplate().method(HttpMethod.GET)

0 commit comments

Comments
 (0)