在 Specflow 中反序列化查询参数的 JSON json URL 不起作用

问题描述 投票:0回答:1

如何在 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查询编码器过滤器

c# automated-tests urlencode specflow visual-studio-test-runner
1个回答
0
投票

尝试以下字符串:

%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"}]

© www.soinside.com 2019 - 2024. All rights reserved.