http代理服务器
代理服务器,Proxy Server,http代理服务器就是基于http协议的代理服务器。
LittleProxy
LittleProxy是一个用Java编写的高性能HTTP代理服务器,基于Netty事件的网络库之上,它非常稳定,性能良好,易于集成到项目中,支持命令行和嵌入式方式。
地址:https://github.com/adamfisk/LittleProxy
代码案例
pom.xml
<dependencies>
<dependency>
<groupId>org.littleshoot</groupId>
<artifactId>littleproxy</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
使用代码
import org.littleshoot.proxy.HttpProxyServer;
import org.littleshoot.proxy.impl.DefaultHttpProxyServer;
public class HttpClientServer {
public static void main(String[] args) {
HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
.withPort(11111)
.withFiltersSource(new MyHttpFiltersSourceAdapter())
.start();
}
}
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.*;
import org.littleshoot.proxy.HttpFilters;
import org.littleshoot.proxy.HttpFiltersAdapter;
import org.littleshoot.proxy.HttpFiltersSourceAdapter;
public class MyHttpFiltersSourceAdapter extends HttpFiltersSourceAdapter {
public HttpFilters filterRequest(HttpRequest originalRequest, ChannelHandlerContext ctx) {
String uri = originalRequest.getUri();
HttpMethod method = originalRequest.getMethod();
System.out.println("method=" + method + ",uri=" + uri);
return new HttpFiltersAdapter(originalRequest) {
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
// TODO: implement your filtering here
System.out.println("clientToProxyRequest=" + httpObject);
return null;
}
@Override
public HttpObject serverToProxyResponse(HttpObject httpObject) {
// TODO: implement your filtering here
System.out.println("serverToProxyResponse=" + httpObject);
return httpObject;
}
};
}
@Override
public int getMaximumResponseBufferSizeInBytes() {
return 10 * 1024 * 1024;
}
}
真是个好年代,什么东西别人都替你写好了~~