1

我正在开发发送数千个 http post 请求的应用程序。我想记录所有响应,并在 Fiddler 的帮助下将它们用作存根。

例如(为简单起见,假设产品价格 = productid):

  1. 发送请求,正文<productId>1</productId>
  2. 得到真正的回应,身体<productprice>1</productprice>
  3. 在本地存储中保存上一步的响应(标题+正文),例如在某些字典[1,"HTTP/1.1 200 OK <productprice>1</productprice>"]中。(由于我们存储了这个响应,下一个匹配模式的请求body contains <productId>1</productId>应该从我们的本地存储响应)
  4. 发送请求,正文<productId>1</productId>
  5. 从本地存储加载响应并返回HTTP/1.1 200 OK <productprice>1</productprice>
  6. 发送请求,正文<productId>2</productId>
  7. 得到真正的回应,身体<productprice>5</productprice>
  8. 在本地存储中保存上一步的响应(标题+正文),例如在某些字典中[1,"HTTP/1.1 200 OK <productprice>1</productprice>"],[2,"HTTP/1.1 200 OK <productprice>2</productprice>"]
  9. ...

如何配置Fiddler它?

细节:

我已经捕获了 1000 个真实POST请求,我想在它们的帮助下调试我的应用程序。

每个请求/响应都是唯一的,通常看起来像:

要求

POST https://myurl HTTP/1.1
Authorization: Bearer xxx
Content-Type: application/soap+xml; charset=utf-8; action="GetList"
Host: myurl.net
Content-Length: 358
Expect: 100-continue 
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
    <s:Body>
        <catalogRequest xmlns="https://myurl">
            <id xmlns="">1</id>
        </catalogRequest>
    </s:Body>
</s:Envelope>

回复

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="https://myurl">
    <env:Body>
        <ns1:catalogResponse>
            <result>
                <id>1</id>
                <name>some text</name>
                <price>109.99</price>
                ... big xml ...
                <status>1</status>
            </result>
        </ns1:catalogResponse>
    </env:Body>
</env:Envelope>

我试过Autoresponder了,但是当我将捕获的会话拖到它们时,Autoresponder它们被转换为如下规则:METHOD:POST EXACT:- 此规则不使用 POST 正文。我无法手动更改 1000 条规则以使用URLWithBody规则

我认为可以创建Fiddler脚本,但我不知道如何存储该脚本捕获的请求/响应以将它们用作映射。

4

1 回答 1

0

经过小型研究,我找到了一种记录响应并在未来将其用作存根的方法。为了实现这一点,我建议使用提琴手脚本。这里是伪代码中的脚本示例

对于BeforeRequest

var body = session.requestBodyBytes;
var id = GetIdFromBody(body);// code for getting id from request body
session.Reply = id;

对于AfterResponse

var body = session.GetRequestBodyAsString();
var id = GetIdFromRespBody(body);// code for getting id from response body
session.SaveResponse(id);
于 2017-01-11T16:02:48.053 回答