在项目中使用,这简化和通用汽车。突出的基本思路,细节可以基于此类改变。

基于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();
} }

它可以作为一个代理server或者转发java类的更多相关文章

  1. 如何在一个线程环境中使用一个线程非安全的java类

    在开发过程中 当我们拿到一个线程非安全的java类的时候,我们可以额外创建这个类的管理类 并在管理类中控制同步 比如 一个非线程安全的Pair类 package test.thread.sx.test ...

  2. 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client,此时的代理server对外就表现为反向代理server。

       Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡.   反向代理:是指以代理server来接收Internet上的请求,然后将 ...

  3. IIS 7 反向代理 URL重写 转发动态请求

    一.反向代理是什么 有一篇文章说的挺好的 Nginx 反向代理.负载均衡.页面缓存.URL重写及读写分离详解 http://www.server110.com/nginx/201402/5534.ht ...

  4. 50行python代码实现个代理server(你懂的)

    之前遇到一个场景是这种: 我在自己的电脑上须要用mongodb图形client,可是mongodb的server地址没有对外网开放,仅仅能通过先登录主机A,然后再从A连接mongodbserverB. ...

  5. C#中自己动手创建一个Web Server(非Socket实现)

    目录 介绍 Web Server在Web架构系统中的作用 Web Server与Web网站程序的交互 HTTPListener与Socket两种方式的差异 附带Demo源码概述 Demo效果截图 总结 ...

  6. Java通过代理server上网

    完整代码 package com.proj.net; //导入编码的jar文件 import it.sauronsoftware.base64.Base64; import java.io.Buffe ...

  7. 计算机网络--http代理server的设计与实现

    一.Socket编程的client和服务端的主要步骤: Java Socket编程:对于http传输协议 client: 1.创建新的socket,绑定serverhost和port号 2.Socke ...

  8. 用golang 实现一个代理池

    背景 写爬虫的时候总会遇到爬取速度过快而被封IP的情况,这个时候就需要使用代理了.在https://github.com/henson/ProxyPool 的启发下,决定自己实现一个代理池.项目已经开 ...

  9. node起本地服务器以及实现代理,前端接口转发

    上一篇文章写了使用docker来做nginx镜像实现本地的页面代理以及接口转发,但是需要下载docker,这个对于很多人来说还是显得比较麻烦,于是这个文章就是介绍如何只用node就可以代理本地的页面和 ...

随机推荐

  1. Java Swing TextArea 滚动条和获得焦点

    JTextArea text=new JTextArea(); text.setLineWrap(true);//设置自己主动换行,之后则不须要设置水平滚动栏 JScrollPane scroll=n ...

  2. 希尔排序java

    希尔排序简述 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率.(希尔排序先将部分数据进行排序,相当于已经部分排好序) ...

  3. eclipse-jee 配置tomcat7,解决404错误

    在eclipse的Servers窗口新建一个tomcat7,配置tomcat的安装路径,然后启动tomcat,访问http://localhost:8080/,但是报404错误,恼火!没有找到要访问的 ...

  4. 模板引擎mustache.js

    Javascript模板引擎mustache.js详解   阅读目录 1. 从一个简单真实的需求讲起 2. mustache的用法 3. mustache的思想 4. {{prop}}标签 5. {{ ...

  5. Directx11学习笔记【十八】 Blending混合

    本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5634580.html 在d3d11中是按frame来渲染物体的,在 ...

  6. Tian Ji -- The Horse Racin

    Tian Ji -- The Horse Racin Problem Description Here is a famous story in Chinese history. "That ...

  7. cocos2dx环境配置和打包

    安装软件准备就绪: vs2012 cocos2d-x-2.2.1 adt-bundle-windows-x86_64-20121030 android-ndk-r9c-windows-x86_64 j ...

  8. JAVA DATE类型推断尺寸数据比较法

    两Date变量类型通过compareTo的方式来比较.这种方法的叙述描述的是,这:假设参数 Date 等于该 Date.返回值 0.假设这 Date 于 Date 在参数,它返回小于 0 的值.假设这 ...

  9. lua、groovy嵌入到java中的性能对比(转)

    lua和groovy都是可以嵌入到java中的脚本语言.lua以高性能著称,与C/C++在游戏开放中有较多使用,groovy是一个基于Java虚拟机(JVM)的敏捷动态语言,在jvm下有着不错的性能. ...

  10. Android-Service组件

    转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/40381109 原文:http://developer.android.com ...