Java Http连接中(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)

原创 2011年01月18日 14:58:00

      使用Java的HttpURLConnection类可以实现HttpClient的功能,而不需要依赖任何其他类库。所有有时候大家就直接使用它来完成一些简单(或复杂)的功能。但是你活在伟大的{print G.F.W}后面,如果你需要访问的网站被墙了,那HttpURLConnection类就会出现连接超时的错误。这时候就需要给他设置代理(Proxy)了。

      设置代理(Proxy)可以有两种方式:

      1、通过设置系统属性(System.setPropery(String key, String value)的方式

      首先你可以在这里看到Java支持的属性。我们可以使用其中的http.proxyHost,http.proxyPort这两个属性。顾名思义,就是分别设置代理服务器地址和代理端口。

     

      替换上面的www.proxy.com为你的代理服务器地址或IP地址,以及相应的端口为真实端口,Http连接及可以工作了。需要注意的是如果你设置了这些属性,那么所有的Http请求都会通过代理服务器。这些属性是JVM级别的,设置了以后对所有的同类请求都有效。比如上面的是关于http的,还有关于ftp的等等。

      如果你的代理服务器不需要验证,那到此就结束了。但一般都是需要验证的。但是你要是看了上面Java支持的属性列表,你就会发现那里面并没有期望中的

       这两个属性。 这时就需要java.net.Authenticator类来完成一般的Http验证。但是java.net.Authenticator这个类却是个抽象类,我们要使用还需要实例化一下子自己的类。个人觉得这里很不方便。如下:

     

       我们需要覆盖java.net.Authenticator类的getPasswordAuthentication()方法,并返回一个PasswordAuthentication实例。要使他起作用,还需要设置

     

      这样就提供了基于Http Basic的验证,接着就可以顺畅的使用需要验证的代理了。 

      2、通过java.net.Proxy类。

      这种方式是实例化一个Proxy类提供代理服务器的信息,如端口和地址。

     

      使用代理的方式是在打开Http连接的时候同时传递一个Proxy参数。如果需要验证信息的话我们可以添加一个Http头参数来实现。

     

      其中的Base64.encode(user:password)是指把用户名和密码用冒号连接起来之后使用Base64编码后的值作为值的一部分。  

      通过这种方式只影响特定的Http连接,但是需要对代码进行修改。这种方式下是否可以使用Authenticator还未做验证。

    

Java中HttpURLConnection使用代理服务器

Java中HttpURLConnection使用代理服务器 Properties prop = System.getProperties(); // 设置http访问要使用的代理服务器的地...
  • u013626519
  • u013626519
  • 2014年02月13日 17:38
  • 1232

HttpURLConnection设置代理服务器

1、设置系统数据 java -Dhttp.proxyHost=proxy.com -Dhttp.proxyPort=80 MyJavaApp或者 System.setProperty("htt...
  • berdy
  • berdy
  • 2012年07月08日 19:52
  • 1717

HttpURLConnection 设置代理

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("176.93.133.144", 8080)); URL url =...
  • chao2263263364
  • chao2263263364
  • 2014年11月05日 14:21
  • 217

HttpURLConnection 协议 -包含代理判断

HttpURLConnection 协议
  • bestcxx
  • bestcxx
  • 2016年04月22日 14:57
  • 450

JAVA HTTP连接(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)

public static void main(String[] args) { // TODO Auto-generated method stub try { ...
  • atco
  • atco
  • 2015年01月30日 15:23
  • 5335

HttpUrlConnection底层实现

转自:http://blog.csdn.net/zhongweijian/article/details/7619453 最近有个需求需要对于获取URL页面进行host绑定并且立即生效,在j...
  • Hknock
  • Hknock
  • 2017年07月04日 16:37
  • 625

HttpURLConnection-proxy

HttpURLConnection设置代理服务器 Java Http连接中(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication) 论述Andro...
  • JESSE_ZHAO_503
  • JESSE_ZHAO_503
  • 2016年03月14日 11:35
  • 374

解析HttpURLConnection与代理服务器

前网络上最流行的协议就是HTTP协议。HTTP协议有许多优点,例如它能够穿越防火墙。同时HTTP也是很多其他协议的基础,例如SOAP协议就是建立在HTTP协议之上的。 Java通过两种API...
  • leonpard
  • leonpard
  • 2005年09月12日 11:24
  • 1316

HttpUrlConnection通过代理访问https站点问题解决

最近由于需要使用带认证的代理去访问https站点,可是在网上百度都是同一套说法使用Authenticator.setsetDefault,发现依然不行,无奈只能去goole,结果答案出来了。 原因是...
  • qq_23152947
  • qq_23152947
  • 2017年05月24日 15:07
  • 514

Java 和 HTTP 的那些事(二) 使用代理

在上一篇博客《模拟 HTTP 请求》中,我们分别介绍了两种方法来进行 HTTP 的模拟请求:HttpURLConnection 和 HttpClient ,到目前为止这两种方法都工作的很好,基本上可以...
  • u012486840
  • u012486840
  • 2016年09月14日 13:38
  • 4077
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Http连接中(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)
举报原因:
原因补充:

(最多只允许输入30个字)