【问题标题】:Fiddler AutoResponder for many post requests用于许多帖子请求的 Fiddler AutoResponder
【发布时间】:2017-01-10 13:23:56
【问题描述】:

我正在开发发送数千个 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. 发送请求,正文&lt;productId&gt;1&lt;/productId&gt;
  5. 从本地存储加载响应并返回HTTP/1.1 200 OK <productprice>1</productprice>
  6. 发送请求,正文&lt;productId&gt;2&lt;/productId&gt;
  7. 得到真正的回应,正文&lt;productprice&gt;5&lt;/productprice&gt;
  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 脚本,但我不知道如何存储该脚本捕获的请求/响应以将它们用作映射。

【问题讨论】:

    标签: http debugging fiddler auto-responder


    【解决方案1】:

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

    对于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);
    

    【讨论】:

    • 能否提供实际的脚本?
    • 我已经删除了这些脚本,因为我不再需要它们了。但此类脚本最重要的部分(在我的回复中提供)是您可以借助以下函数获取请求/响应的主体:GetRequestBodyAsString, requestBodyBytes @f0rt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多