Это ожидаемое поведение UriBuilder? - PullRequest
4 голосов
/ 27 января 2012

Вот что я делаю (JAX-RS 1.0, Джерси 1.11):

import javax.ws.rs.core.UriBuilder;
System.out.println(UriBuilder.fromPath("/").queryParam("x", "%40").build());
System.out.println(UriBuilder.fromPath("/").queryParam("x", "100%").build());

Ожидаемое:

/?x=%2540
/?x=100%25

Но фактический результат:

/?x=%40
/?x=100%25

Что происходит? Что такое обходной путь, если UriBuilder должен так себя вести?

Ответы [ 2 ]

2 голосов
/ 28 января 2012

Я удивлен, но вот как это работает:

UriBuilder.fromUri("/").queryParam("x", "{value}").build(/* any text */);
0 голосов
/ 27 января 2012

Проблема может заключаться в том, что существует дополнительный метод для создания URI из закодированных строк:

Из Javadocs: build (): «Все символы«% »в строковых значениях будут закодированы. Состояние компоновщика не изменяется "

buildFromEncoded (): " Будут закодированы все символы% в строковых значениях, за которыми не следует два шестнадцатеричных числа. "

URIBuilder.buildFromEncoded(): http://jsr311.java.net/nonav/javadoc/javax/ws/rs/core/UriBuilder.html#buildFromEncoded%28java.lang.Object...%29?

надеюсь, что помогло

...