Java通过代理server上网

完整代码

package com.proj.net;

//导入编码的jar文件
import it.sauronsoftware.base64.Base64;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 非常多公司会对网上进行限制,要通过代理server和口令才干连接外网。

<br>
 * 这样的方式有非常多优点:<br>
 * 1、安全。代理server像一层过滤层;<br>
 * 2、节省成本,仅仅须要分配非常少的IP地址就可以;<br>
 * 3、对员工上网能够个性化配置,避免有人下载大量数据而造成网络拥堵不堪。<br>
 *
 * 本文通过一个小案例来介绍怎样在程序里跨过局域网訪问外网。

<br>
 * 对于搞网络开发的人来说。不值一提;但对于做JAVA EE应用开发的人来说,能够參考。<br>
 *
 * @author 王一洋
 *
 * 2014-10-30
 * */
public class Test {
	public static void main(String[] args) {
		try {
			//两种方式设置代理server
			//设置代理1
			//Proxy proxy = new Proxy(Proxy.Type.HTTP,new InetSocketAddress("", 80));
			//设置代理2
			System.getProperties().setProperty( "http.proxyHost", "");

			System.getProperties().setProperty( "http.proxyPort", "" );

			String urlString = "http://blog.csdn.net/";
			URL url = new URL(urlString);
			//相应第一种设置方式
			//HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(proxy);

			HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
			urlConnection.setRequestMethod("GET");
			urlConnection.setConnectTimeout(1000);
			//设置User Agent
			urlConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
			//设置訪问的username与password
			urlConnection.setRequestProperty( "Proxy-Authorization", "Basic" + Base64.encode("username:password") );
			urlConnection.connect();
			System.out.print(urlConnection.getResponseCode());
			BufferedInputStream bis = new BufferedInputStream(urlConnection.getInputStream());
			InputStreamReader isr = new InputStreamReader(bis,"UTF-8");
			BufferedReader bufferedReader = new BufferedReader(isr);
			String str = "";
			StringBuffer buffer = new StringBuffer("");
			while((str = bufferedReader.readLine())!=null){
				buffer.append(str+"\r\n");
			}
			System.out.println(buffer);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

返回code:200,OK!

异常Server returned HTTP response code: 403
for URL

在url.openConnection()后加入:

connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

时间: 2024-10-20 16:15:49

Java通过代理server上网的相关文章

JAVA如何设置代理server,s取消代理erver

1.一个简短的引论 代理server(Proxy Server)是一种重要的server安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用. 代理server大多被用来连接INTERNET(国际互联网)和INTRANET(局域网).主要功能:就是代理网络用户去取得网络信息.形象的说,它是网络信息的中转站.本文主要介绍怎样使用java代码设置代理server. 主server为了防止被伪用户攻击,统一让用户通过代理server去訪问主server,这样做的安全性是显而

代理server的概要知识

技术支持请留言:http://www.lcpower.cn 一.什么是代理server? 代理server英文全称是Proxy Server.其功能就是代理网络用户去取得网络信息.形象的说:它是网络信息的中转站. 在普通情况下.我们使用网络浏览器直接去连接其它Internet网站取得网络信息时,需送出Request信号来得到回答,然后对方再把信息以bit方式传送回来.代理server是介于浏览器和Webserver之间的一台server.有了它之后,浏览器不是直接到Webserver去取回网页而

java动态代理技术

主要用来做方法的增强.让你能够在不改动源代码的情况下,增强一些方法,在方法运行前后做不论什么你想做的事情(甚至根本不去运行这种方法).由于在InvocationHandler的invoke方法中,你能够直接获取正在调用方法相应的Method对象.详细应用的话.比方能够加入调用日志,做事务控制等. 另一个有趣的作用是能够用作远程调用,比方如今有Java接口,这个接口的实现部署在其他server上,在编写client代码的时候,没办法直接调用接口方法,由于接口是不能直接生成对象的,这个时候就能够考虑

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

? ?Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡. ? 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client.此时的代理server对外就表现为反向代理server. ? ?通俗来讲,反向代理server就好比我们常说的中介.Internetclient能够看作是租房的客户,而内部网络的server好比是房东.租户通过中

理解java动态代理

java动态代理是java语言的一项高级特性.在平时的项目开发中,可能很难遇到动态代理的案例.但是动态代理在很多框架中起着不可替代的作用,例如Spring的AOP.今天我们就聊一聊java动态代理的实现原理. jdk对于动态代理的支持主要依赖于两个类:Proxy和InvocationHandler.我们先看一下类图. Subject类是主题类,定义了我要做什么.我们需要代理的类即实现Subject接口的RealSubject. 1.InvocationHandler InvocationHand

java动态代理的实现

动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于AOP的框架)的设计与开发,本文将通过实例来讲解Java动态代理的实现过程. 友情提示:本文略有难度,读者需具备代理模式相关基础知识,. 通常情况下,代理模式中的每一个代理类在编译之后都会生成一个class文件,代理类所实现的接口和所代理的方法都被固定,这种代理被称之为静态代理(Static Proxy).那么有没有一种机制能够让系统在运行时动态创建代理类?答案就是本文将要介绍的动态代理(Dynamic Proxy).动态代理是一种较

java的代理和动态代理简单测试

什么叫代理与动态代理? 1.以买火车票多的生活实例说明. 因为天天调bug所以我没有时间去火车票,然后就给火车票代理商打电话订票,然后代理商就去火车站给我买票.就这么理解,需要我做的事情,代理商帮我办了,但是需要出手续费. 废话不说了,直接上java代码吧! java动态代理 //接口   (抽象买票的事情) public interface ICalc {     public int add(int i, int j);}//实现这个接口   (具体到我买票的事情) public class

java动态代理机制

首先了解代理设计模式,其思想是为其他对象提供一种代理以控制对这个对象的访问. java动态代理就是遵循这种思想,spring中的AOP实现原理就是java的动态代理. 在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface).另一个则是 Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的. 每一个动态代理类都必须要实现InvocationHandler这个接口,并且每个代理类的实例都关联到了一个handler,当我们通

java动态代理

要想了解Java动态代理,首先要了解什么叫做代理,熟悉设计模式的朋友一定知道在Gof总结的23种设计模式中,有一种叫做代理(Proxy)的对象结构型模式,动态代理中的代理,指的就是这种设计模式. 在我看来所谓的代理模式,和23种设计模式中的"装饰模式"是一个东西.23种设计模式中将它们作为两种模式,网上也有些文章讲这两种模式的异同,从细节来看,确实可以人为地区分这两种模式,但是抽象到一定高度后,我认为这两种模式是完全一样的.因此学会了代理模式,也就同时掌握了装饰模式. 代理模式 代理模