2017-01-10 3 views
0

Я разрабатываю приложение, которое отправляет тысячи запросов HTTP-сообщений. Я хочу записать все ответы и использовать их в качестве заглушек с помощью Fiddler`.Fiddler AutoResponder для многих почтовых запросов

Например (предположим, цену продукта = 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, но я не знаю, как хранить захваченные запросы/ответы для этого скрипта, чтобы использовать их в качестве сопоставления.

ответ

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