Почтальон не может обрабатывать символы Юникода в URL для маршрутизации - PullRequest
0 голосов
/ 06 ноября 2018

Я определил Ресурс API в WSO2 ESB , как это с GET метод:

/sms/{username}/{password}/{src}/{destination}/{body}

Теперь, если я вызываю свой API через стандартный браузер, такой как Chrome или Firefox, он работает нормально, и я получаю код ответа ok 200

127.x.x.x:8280/sms/username/password/123123123/456456456/سلام

Но я не могу вызвать этот API через Почтальон , и он возвращает Не найдено 404 . Если я заменим 'سلام' на стандартную ascii строку типа 'hello' , она будет работать нормально и вернет код ok 200 :

127.x.x.x:8280/sms/username/password/123123123/456456456/hello

Я пробовал множество Тип контента с в Заголовки вкладка Почтальон , включая это, но это не сработало:

text/html; charset=UTF-8

Я также отслеживал сетевые запросы с помощью fiddler . Стандартный браузер отправляет запрос с такими параметрами:

Соединение: keep-alive Обновление-небезопасные запросы: 1 Пользователь-агент: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 70.0.3538.77 Safari / 537.36 Принять: Текст / HTML, приложение / XHTML + XML, приложение / XML; д = 0,9, образ / WebP, изображение / APNG, / * * тысяча сорок-пять; д = 0,8 Accept-Encoding: gzip, deflate Accept-Language: en-US, en; q = 0,9

И Почтальон отправить запрос с такими параметрами:

Content-Type: text / html; charset = UTF-8 кэш-контроль: без кеша Почтальон-токен: 5ccc574f-54d2-4c5b-ac72-b0f5f5a8e0be User-Agent: PostmanRuntime / 7.3.0 Принимаем: / принять кодировку: gzip, deflate Подключение: keep-alive

Я использую Почтальон v6.4.4

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Вам необходимо вручную закодировать части URL.

Попробуйте это https://stackoverflow.com/a/49964318/9624430

0 голосов
/ 09 ноября 2018

Я пытался решить эту проблему с WSO2 ESB 5.0.0 . Это работает для меня, как вы ожидали через почтальон .

<api xmlns="http://ws.apache.org/ns/synapse" name="test-api" context="/test">
   <resource methods="GET" uri-template="/value/{val1}">
      <inSequence>
         <log level="full">
            <property name="test" expression="get-property('uri.var.val1')"/>
         </log>
         <payloadFactory media-type="json">
            <format>{ "test": "$1"}</format>
            <args>
               <arg evaluator="xml" expression="get-property('uri.var.val1')"/>
            </args>
         </payloadFactory>
         <respond/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </resource>
</api>

Запрос: http://localhost:8280/test/value/سلام

Ответ:

{
    "test": "سلام"
}

Попробуйте с WSO2 ESB 5.0.0.

...