为什么 Postman 替换我的get请求字符串中的字符?

ghg1uchk  于 2022-12-26  发布在  Postman
关注(0)|答案(4)|浏览(267)

我正在通过 Postman see image from postman发出get请求
而当请求到达我的控制器时,像“+”这样的字符会被转换成空格““。API是用C#写的。
我的控制器代码是:

[RoutePrefix("")]
public partial class _DesifrarCusController : CaramlController, I_DesifrarCusController 
{
    [HttpGet]
    [Route("descifrarCus")]
    public IHttpActionResult GetDescifrarCusResponse( [FromUri] string cus = null ) {
        return Ok (ExecGetDescifrarCusResponse(cus));
        //return Ok();
    }
}

我的代码的调试可以在下面的截图中看到:debugging postman request
有人知道 Postman 在用请求字符串做什么吗?
我试过用引号和ASCII字符发送字符串,但问题仍然存在。
I add capture of the postman headers

rfbsl7qr

rfbsl7qr1#

需要对Postman上的参数进行编码,先在Params页签下添加参数

然后选择该值并右键单击该值选择EncodeURIComponent

你就会得到编码参数

参考:https://learning.postman.com/docs/sending-requests/requests/

uurity8g

uurity8g2#

Postman 发送数据查询编码它与urlencode。这是正常的。发送这种长数据从网址是不是最好的做法。我建议使用HttpPost和发送数据从身体。

gpnt7bae

gpnt7bae3#

URI中的数据必须是UrlEncoded。当你的C#应用程序接收到数据时,它会解码数据,用空格代替加号(公平地说,这是旧的标准)。
Postman 不会自动为你做这件事,但它可以帮助。
如果你有一个这样的值。

您可以选择文本并右键单击它以获得对值进行编码的选项。

这将正确地对值进行编码,并按预期在C#应用程序中接收该值。

mfpqipee

mfpqipee4#

正如其他人在回答中提到的,这是编码问题。或者,您可以使用[FromBody],然后将字符串放在postman的body请求部分

public IHttpActionResult GetDescifrarCusResponse( [FromBody] string cus = null ) {
        return Ok (ExecGetDescifrarCusResponse(cus));
        //return Ok();
    }

相关问题