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

基于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. ORACLE单字符函数的函数

     1.           ASCII(C) 说明:返回C的首字符在ASCII码中相应的十进制 举例: SQL>SELECT ASCII('A') A,ASCII('a') B,ASCII( ...

  2. 使用Intel HAXM 加速你的Android模拟器

    Android 模拟器一直以运行速度慢著称, 本文介绍使用 Intel HAXM 技术为 Android 模拟器加速, 使模拟器运行度媲美真机, 彻底解决模拟器运行慢的问题. Intel HAXM ( ...

  3. java基础程序题

    发现自己初学java时保存在word里的练习题,哈哈,放博客里面来作为纪念吧~~~ [程序1]  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔 ...

  4. Zygote过程【3】——SystemServer诞生

    欢迎转载.转载请注明:http://blog.csdn.net/zhgxhuaa 在ZygoteInit的main()方法中做了几件大事.当中一件便是启动Systemserver进程.代码例如以下: ...

  5. [LeetCode169]Majority Element求一个数组中出现次数大于n/2的数

    题目: Given an array of size n, find the majority element. The majority element is the element that ap ...

  6. Android-管理Activity生命周期

    用户在浏览,退出,返回app时,app中的Activity实例会在不同状态之间切换.比如,当activity第一次启动,然后来到系统前台,受到用户的注意,这个过程中,android系统调用了一系列ac ...

  7. Namespace:Openstack的网络实现

    前言:众所周知在linux系统中PID.IPC.Network等都是全局性的资源,不论什么的改动和删减都会对整个系统造成影响.这也是为什么kvm之类的虚拟化技术须要模拟一个完毕主机系统的原因. 可是. ...

  8. c++内存泄漏处理(积累)

    写c++程序时,常常会出现内存泄漏的问题,这里从网上找了一种非常麻烦的方法:假设想找到每一个cpp文件的内存泄漏,都必须在每一个cpp加上例如以下代码: #include <crtdbg.h&g ...

  9. 自己主动机串标:Directed Acyclic Word Graph

    trie -- suffix tree -- suffix automa 有这么几个情况: 用户输入即时响应AJAX搜索框, 显示候选名单. 搜索引擎keyword统计数量. 后缀树(Suffix T ...

  10. HDN2048(交错复发)

    上帝.神与神 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...