0

是否可以更改来自 https 站点的 har(其中包含 json)响应?我看到最初的 json getText(),然后使用,并通过和setText()改变它的大小。正如我在调试中看到的那样,内容已更改。但似乎没有任何效果,chrome收到相同的旧json。有办法吗?setSizesetBodySize

    public static class ResponseModifier implements ResponseInterceptor {

    @Override
    public void process(BrowserMobHttpResponse response, Har har) {

        String contentType = response.getHeader("Content-Type");

        if (contentType!=null && contentType.startsWith("application/json")){
            response.getEntry().getResponse().getContent().setText(respond);
            response.getEntry().getResponse().getContent().setSize(respond.length());
            response.getEntry().getResponse().setBodySize(respond.length());
            response.getRawResponse().removeHeaders("Content-Length");
            response.getRawResponse().addHeader("Content-Length", ""+respond.length());
        }
    }

我认为也许关键在于它response.getRawResponse().getEntity().getContentLength()具有旧值,但我无法重写它。还是原因不同?

4

1 回答 1

0

结果比我想象的要容易得多。我必须使用 BMP 的 core-littleproxy 版本,BrowserMobProxy 类并创建 BrowserMobProxyServer 的实例。我只使用过滤器:

 proxy.addResponseFilter((response, contents, messageInfo) -> {
        if ((contents.getContentType().startsWith("application/json"))) {
            contents.setTextContents(respond);
        }
    }); 

谢谢阅读 :)

于 2016-02-15T13:35:56.950 回答