1

我一直在玩 Littleproxy,发现修改响应很容易,但找不到任何修改请求参数的好例子。

在网上我只找到了一个例子,修改帖子数据。但不能让它工作。

你有一个例子来解释我们如何获取请求参数并修改它们。

我有这个:

public HttpResponse proxyToServerRequest(HttpObject httpObject) {

    if(httpObject instanceof FullHttpRequest){
        FullHttpRequest request = (FullHttpRequest) httpObject;

        if(request.getMethod() == HttpMethod.POST
                && request.getUri().contains("/post")){

            CompositeByteBuf contentBuf = (CompositeByteBuf) request.content();           

            String contentStr = contentBuf.toString(CharsetUtil.UTF_8);

            System.out.println("Post content for " + request.getUri() + " : " + contentStr);

            String newBody = contentStr.replace("e", "ei");

            ByteBuf bodyContent = Unpooled.copiedBuffer(newBody, CharsetUtil.UTF_8);

            contentBuf.clear().writeBytes(bodyContent);
            HttpHeaders.setContentLength(request, newBody.length());
        }
    }

    return null;
}

你还知道其他什么好例子吗?

4

1 回答 1

1

例如,您可以像这样删除特定的标题:

@Override
public HttpResponse proxyToServerRequest(HttpObject httpObject)
{
    if (httpObject instanceof HttpMessage)
    {
        HttpHeaders headers = ((HttpMessage)httpObject).headers();
        headers.names().forEach(h -> headers.remove(headerName));
    }

    return super.proxyToServerRequest(httpObject);
}
于 2017-10-24T07:22:31.257 回答