如何处理uri中带有空格和斜杠的参数

本文关键字:空格 参数 何处理 处理 uri | 更新日期: 2023-09-27 18:16:23

我有一个名为Test controller的控制器,方法名为Test测试方法接受一个参数。但是当参数包含有空格斜杠的值时,web api给出错误。我正在使用WEB API 2.

[Route("Test/{companyName}")]
[AcceptVerbs("GET", "POST")]
[System.Web.HHttpGet]
public HttpResponseMessage Test(string companyName)
{
}

参数值为BTL/Force Motor Ltd.

我试过了,但是什么也没发生。

<uri>
  <schemeSettings>
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" />
  </schemeSettings>
</uri>

如何处理uri中带有空格和斜杠的参数

您需要对发送到API的值进行URL编码,如下所示:

http://yourApiDomainName/api/yourControllerName/?公司名称=线下20% % 2 f % 20迫使% 20电动机% 20有限公司

[SPACE]当URL编码为:%20

[斜杠]当URL编码为:%2F

你不需要在你的控制器中对这些值进行HTTP解码,因为这些值一旦到达你的控制器就会被框架解码。因此,您将在控制器中看到'BTL%20%2F%20Force%20Motor%20Ltd'为'BTL/Force Motor Ltd'。

查看URL编码的完整列表:http://www.w3schools.com/tags/ref_urlencode.asp

您的问题与WebAPI本身无关,而是ASP如何使用WebAPI。Net处理一些特定的url。这也可能影响传递到API的点("。")。以下是对我有用的方法:

将这一行添加到您的web。

system.web下的config
<httpRuntime relaxedUrlToFileSystemMapping="true" />

Phil hackack有一篇很棒的文章,详细介绍了