HttpFiltersSourceAdapter でこの 2 つのメソッドをオーバーライドする必要があります。ゼロ以外のバッファ サイズを返します。LittleProxy は自動的に httpRequest と httpContent を集約し、AggregatedFullHttpRequest にラップして、httpContent にキャストできるようにします。
@Override
public int getMaximumRequestBufferSizeInBytes() {
return 1024 * 1024;
}
@Override
public int getMaximumResponseBufferSizeInBytes() {
return 1024 * 1024 * 2;
}
次に、HTTP パッケージのコンテンツを複製して読み取ることができます。
String cloneAndExtractContent(HttpObject httpObject, Charset charset){
List<Byte> bytes = new ArrayList<Byte>();
HttpContent httpContent = (HttpContent) httpObject;
ByteBuf buf = httpContent.content();
byte[] buffer = new byte[buf.readableBytes()];
if(buf.readableBytes() > 0) {
int readerIndex = buf.readerIndex();
buf.getBytes(readerIndex, buffer);
}
for(byte b : buffer){
bytes.add(b);
}
return new String(Bytes.toArray(bytes), charset);
}
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
System.out.println("clientToProxyRequest - to -> "+getRequestUrl());
System.out.println(cloneAndExtractContent(httpObject, StandardCharsets.UTF_8));
return null;
}
@Override
public HttpObject serverToProxyResponse(HttpObject httpObject)
{
System.out.println("serverToProxyResponse <- from - "+getRequestUrl());
System.out.println(cloneAndExtractContent(httpObject, StandardCharsets.UTF_8));
return httpObject;
}