Помогите найти способ как извлечь полностью весь запрос и ответ на сервер., то есть меня больше интересует больше тело чем сами статусы, тайминги и так далее…
Посмотрите это:
browserMobProxyInstance.getHar().getServer().getHar().getLog().getEntries().stream().filter(some filter Predicate for example).findFirst().get(). … и тут Вам будет вся АРІ для getRequest, getResponse и все что угодно
скорее это ответ на мой вопрос - GitHub - lightbody/browsermob-proxy: A free utility to help web developers watch and manipulate network traffic from their AJAX applications.
нужно настроить фильтры - addRequestFilter, addResponseFilter
на данном этапе можно редактировать запросы и ответы.
ви можете начать писать вес трафик HAR архив и в конце теста извлечь его, так как я показал више
да, но я хочу ловить/редактировать/ и слать дальше сообщения на сервер и с него. так что har мне не до конца подходит, но спасибо за помощь
Нужно изначально ставить корректно вопрос, что Вы хотите не столько просматривать, сколько манипулировать данными во время теста и влиять соответственно на него.
Для этого Вам действительно нужно настраивать свои фильтры
вот так, например, делали задержку
public static void regDelayFor(String apiSign, long delayInMs) {
ResponseFilter filter = (response, contents, messageInfo) -> {
if (messageInfo.getOriginalUrl().contains(apiSign)) {
try {
Thread.sleep(delayInMs);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
ProxyFactory.get().addFirstHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, 16777216));
}
а так складывали ответы в Мапу для прикладывания потом в логи (систем аут для отладки)
public static void regCatcherFor(String apiSign) {
ResponseFilter filter = (response, contents, messageInfo) -> {
System.out.println("filter url " + messageInfo.getOriginalUrl());
System.out.println("filter url " + messageInfo.getOriginalUrl().contains(apiSign));
if (messageInfo.getOriginalUrl().contains(apiSign)) {
System.out.println("regCatcherFor " + contents.getTextContents());
responseMap.put(apiSign, contents.getTextContents());
System.out.println(id);
}
};
ProxyFactory.get().addFirstHttpFilterFactory(new ResponseFilterAdapter.FilterSource(filter, 16777216));
}
Таким образом можно передать и JSON внутрь на какой ты хочешь подменить ответ.
Почему именно такой код не спрашивай, со временем к этому пришли, изначально по документации добавить фильтр можно в пару строк, но это влекло свои проблемы при тестировании именно нашего проекта
спасибо, но вопрос уже давно не актуален, и данный способ уже давно юзается.
Если семь дней для Вас уже “давно”, могу предположить, что Вы уже построили космический корабль.
ну как сказать, построил систему подмены нужных параметров на запрос и ответ от сервера, + ещё пару фичей + переписал фрейворк , то как уже собралось много костылей и нужно было более стабильную версию.
(P/S, я дев.)