它可以作为一个代理server或者转发java类
2015-12-04 16:03
316 查看
在项目中使用,这简化和通用汽车。突出的基本思路,细节可以基于此类改变。
基于java容器和servlet。
基于java容器和servlet。
package com.xxx.first; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.compress.utils.IOUtils; public class SimpleProxy { /** * 使用GET提交到目标server。 * * @param request * @param response * @param targetUrl * @throws IOException */ private void get(HttpServletRequest request, HttpServletResponse response, String targetUrl) throws IOException { URL url = new URL(targetUrl); BufferedReader in = new BufferedReader(new InputStreamReader( url.openStream())); String line; PrintWriter out = response.getWriter(); while ((line = in.readLine()) != null) { out.println(line); } out.flush(); in.close(); } /** * 使用POST提交到目标server。 * * @param request * @param response * @param targetUrl * @throws IOException */ private void post(HttpServletRequest request, HttpServletResponse response, String targetUrl) throws IOException { URL url = new URL(targetUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 发送POST请求必须设置例如以下两行 conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod("POST"); // 能够拷贝client的head信息作为请求的head參数 // conn.setRequestProperty("Charsert", "UTF-8"); conn.setRequestProperty("Content-Type", "application/json"); // 直接把client的BODY传给目标server OutputStream send = conn.getOutputStream(); InputStream body = request.getInputStream(); IOUtils.copy(body, send); send.flush(); send.close(); body.close(); // 获取返回值 BufferedReader in = new BufferedReader(new InputStreamReader( conn.getInputStream())); PrintWriter out = response.getWriter(); String line; while ((line = in.readLine()) != null) { out.println(line); } out.flush(); } }
相关文章推荐
- 从头认识java-12.2 Class对象(2)-使用与注意点
- Java项目如何记录日志
- spring mvc使用Servlet3异步要注意的几个问题
- Bean的初始化和销毁
- Eclipse开发工具组合键介绍
- Eclipse+Mingw+Boost 环境搭建
- java程序怎么在一个电脑上只启动一次,只开一个进程
- Spring线程池
- Java编程思想 之 线程协作
- eclipse 字符集 编码 设置
- Java系列:JVM指令详解(下)(zz)
- Java系列:JVM指令详解(上)(zz)
- spring--简单实现定时器(配置+注解)
- Java中volatile关键字的含义
- JAVA中字符串比较equals()和equalsIgnoreCase()的区别
- 通过三目运算符来看JAVA的自动拆箱和装箱
- 【OSGi】Could not find bundle: org.eclipse.equinox.console问题
- Eclipse之NDK编译-- Type 'jint' could not be resolved, and JNIEnv, jclass错误解决办法
- java问题汇总
- java动态代理实现Proxy和InvocationHandler cglib