Spring Cloud Contract - Как передать «+» (знак плюс) в качестве параметра запроса в файл .yaml - PullRequest
1 голос
/ 11 мая 2019

Когда я пытаюсь передать знак «+» как часть параметра запроса, он кодирует любой из результатов.

Я ожидаю передать параметр phone со значением +380999418260.

Пробовал наиболее ожидаемый правильный путь:

request:
  method: GET
  url: /customers/prepaid
  queryParameters:
    phone: "%2B380999418260"
  headers:
    Content-Type: application/x-www-form-urlencoded

Также пытался перейти непосредственно с URL:

request:
  method: GET
  url: /customers/prepaid?phone=%2B380999418260
  headers:
    Content-Type: application/x-www-form-urlencoded

Оба говорят, что телефон %2B380999418260

Из журналов он конвертирует знак%:

"X-Query-String":"phone=%252B380999418260"

Я также пытался передать его без кодировки:

request:
  method: GET
  url: /customers/prepaid
  queryParameters:
    phone: "+380999418260"
  headers:
    Content-Type: application/x-www-form-urlencoded

Но в этом случае он конвертирует знак + впробел.

Когда я получаю доступ к этой конечной точке из Почтальона с этим URI /customers/prepaid?phone=%2B380999418260, он возвращает правильный ответ, где используется правильный телефон со знаком "+".

1 Ответ

0 голосов
/ 11 мая 2019

Согласно этому вопросу , вы не можете передать символ + напрямую, он должен быть закодирован.Но на стороне сервера вы можете декодировать полученную строку, используя URLDecoder class:

String myString = "%2B380999418260";
URLDecoder.decode(myString, "ISO-8859-1");
// output: +380999418260
...