您的位置 首页 java

HTTP请求:如何通过Java在HTTP连接中使用代理

在开发过程中,面对与其他系统的对接,目前很多的对接方式都是采取的RESTful风格的Http请求,市面上也有许多的工具类可供我们去发起Http请求,接收响应。那么大家知道吗?若网络是需要代理的时候,我们该如何进行Http访问呢。下面我们来赘述一下:

HTTP请求:如何通过Java在HTTP连接中使用代理

发起请求

大部分Http工具类,比如百度就能看到的一些示例代码,一般发起Http请求,都是通过 openConnection()或者openStream()的方式,来创建连接的。

普通情况下,已经是可以满足了,当遇到代理网络的情况时,就会发现连接是不通的。

我们需要在创建连接之前,做一些小动作:

设置代理地址

在openConnection()或openStream()之前,我们需要增加以下2行代码:

 // PROXY_HOST:代理的IP地址
System.setProperty("proxyHost", PROXY_HOST); 
// PROXY_PORT:代理的端口号
System.setProperty("proxyPort", PROXY_PORT);   

从而指定网络代理的ip和端口号。

设置代理验证

当代理需要验证的时候,也就是需要账户和密码,我们指定账户名和密码:

 // PROXY_USERNAME:代理账户名
// 或者 System.setProperty("proxyUsername", PROXY_USERNAME);
System.setProperty("proxyUser", PROXY_USERNAME); 
// PROXY_PASSWORD:密码
System.setProperty("proxyPassword", PROXY_PASSWORD);  

如果你认为加上以上两行代码就行,那就错了,他还需要另外的一个操作:

就是需要 java.net.Authenticator 类来完成一般的Http验证。

那么我们如何使用这个类来进行验证呢:

十分简单,我们需要创建一个继承自 java.net.Authenticator的子类,通过这个子类来帮助我们实现Http代理的验证

 class BasicAuthenticator extends Authenticator {
private String userName;
private String password;

public BasicAuthenticator(String userName, String password) {
this.userName = userName;
this.password = password;
}
/**
 * Called when password authorization is needed. Subclasses should
 * override the default implementation, which returns null.
 *
 * @return The PasswordAuthentication collected from the
 * user, or null if none is provided.
 */ @Override
 protected PasswordAuthentication getPasswordAuthentication() {
 return new PasswordAuthentication(userName, password.toCharArray());
 }
}  

并在发起请求之前加入如下代码即可:

 Authenticator.setDefault(new BasicAuthenticator(PROXY_USERNAME, PROXY_PASSWORD));  

之后我们进行Http请求都将进行代理的设置和验证,从而满足我们的代理网络下的Http请求功能。

文章来源:智云一二三科技

文章标题:HTTP请求:如何通过Java在HTTP连接中使用代理

文章地址:https://www.zhihuclub.com/180822.shtml

关于作者: 智云科技

热门文章

评论已关闭

10条评论

  1. Truly lots of awesome data!
    paper writing service reddit best cheap essay writing service

  2. Terrific facts. Appreciate it!
    writing a good essay university personal statement writing service

网站地图