当前位置: 首页 > 知识库问答 >
问题:

邮递员无法处理url中用于路由的unicode字符

施俊远
2023-03-14

我在WSO2 ESB中使用GET方法定义了如下API资源:

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

现在,如果我通过标准浏览器(如chrome或firefox)调用API,它可以正常工作,并且我得到的响应代码是ok 200

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

但是我不能通过Postman调用这个API,它返回NotFound404。如果我将“سلام”替换为像“hello”这样的标准ascii字符串,它工作正常,并返回代码ok 200:

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

我在postman的Headers选项卡中尝试了多种内容类型,包括以下内容,但都不起作用:

text/html; charset=UTF-8

我还使用fiddler监视网络请求。使用以下参数的标准浏览器发送请求:

连接:保持活动升级不安全请求:1用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/70.0.3538.77 Safari/537.36接受:text/html、application/xhtml、application/xml;q=0.9,图像/webp,图像/apng,/;q=0.8接受编码:gzip,deflate接受语言:en-US,en;q=0.9

和具有以下参数的邮递员发送请求:

Content-Type: text/html; charset=UTF-8 cache-control: no-ache Postman-Token: 5ccc574f-54d2-4c5b-ac72-b0f5f5a8e0be User-Agent: PostmanRuntime/7.3.0接受:/接受-编码:gzip,放气连接:保持活力

我使用postman v6.4.4

共有2个答案

夏侯野
2023-03-14

我用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。

曾奇略
2023-03-14

您需要手动编码URL的部分内容。

试试这个https://stackoverflow.com/a/49964318/9624430

 类似资料:
  • 我在URL中有以下格式。 这里的密码类似于qDTA*$X)ME/74。当我在URL中直接使用此密码时,邮递员不响应。我应该如何继续测试此url?

  • 我用java运行代码,Unicode字符可以显示正确,但当我用maven(Mvn clean test)运行代码时,Unicode字符显示不正确。我有用户范围报告和扩展报告显示日志的Unicode字符也不正确 实际结果:?y l v?n b?n ti?ng vi?t 预期结果:Derâlàvăn b n tiéng viét

  • 问题内容: 当我运行它时,它抱怨: 但是我不能使用,因为它会抱怨: 有人知道如何处理吗? 问题答案: 您可以使用urllib.parse.quote()对URL的路径部分进行编码。

  • 我试图从邮递员这里发送json正文,我有简单的php代码获取json正文 当我从邮递员那里发送json尸体时,它给出了这些东西 注意:未定义的偏移量:第7行D:\Xampp\htdocs\Ass\index.php中的0 数组 那么如何从php文件中获取json值呢?

  • 问题内容: 在2010年,您是否会在大型Web门户中提供包含UTF-8字符的URL? 根据URL上的RFC禁止使用Unicode字符。必须对它们进行百分比编码以符合标准。 不过,我的主要观点是提供未编码的字符,其唯一目的是拥有美观的URL,因此百分比编码已被淘汰。 不论RFC怎么说,所有主流浏览器似乎都可以解析这些URL。不过,我的总体印象是,离开网络浏览器领域时,它变得非常不稳定: URL复制并

  • 我尝试将Content-Type的头修改为multipart/form-data和application/octet-stream。我还尝试取消postman中的headers部分,并在选择文件时依赖于表单数据和二进制设置的正文类型。“表单-数据”设置会将以下内容添加到调用中: 内容-处置:表单-数据;name=“TheFileTosend.txt”;filename=“TheFileTosend