如何在 Specflow 中对 url 上的查询参数进行编码?这 GET 调用 API,其中包含搜索选项,场景不断变化为 使用 searchOperator 的情况 = equal, in, like
获取 API 调用
url.com/?SearchOptions=[{"Searchby":"title","searchOperator":"contains","searchValue1":"testing"}]
步骤定义
[When(@"Requesting for Search: (.*), (.*)")]
public void WhenAGetRequestSearchOnly(string searchOption, int statusCode)
{
switch (statusCode)
{
case 401:
Token=invalidtoken"; - This pass
case 200:
Token="invalidtoken"; -Failed 400 (def url is not encoded properly)
break;
}
SetResponse(EndPoints.GetResponseSearchOnly(_Token, searchOption, statusCode));
}
- 同样的情况也出现在邮递员中(这意味着 url 未正确编码)
需要 url 才能点击 - /endpointapi?SearchOptions=[{%22Searchby%22:%22title%22,%22searchOperator%22:%22contains%22,%22filterValue1%22:%22testing%22}]
API GET 调用工作正常
url.com/?SearchOptions=[{"Searchby":"title","searchOperator":"contains","searchValue1":"testing",searchValue2":""}]
当结束这个网址时,它就像这样
%7B%22SearchBy%22%3A%22title%22%2C%22SearchOperator%22%3A%22contains%22%2C%20%22SearchValue1%22%3A%22Testing%22%7D
给出上述错误
作为示例,浏览器 url 工作正常(请忽略 json 的值)
注意- 使用在线json查询编码器过滤器
尝试以下字符串:
%5B%7B%22Searchby%22%3A%22title%22%2C%22searchOperator%22%3A%22contains%22%2C%22searchValue1%22%3A%22testing%22%7D%5D
而不是: [{"Searchby":"title","searchOperator":"contains","searchValue1":"testing"}]