Java中如何注册协议

      项目中需要在后台向第三方服务器发送Http请求,并且有一些特殊的要求。重写了HttpURLConnection的实现。但是怎么调用这个自定义的HttpURLConnection,而不是调用系统的sun.net.www.protocol.http.HttpURLConnection。

      通过查看java原代码(URL.openConnection)可以发现,不管哪种链接都是听过协议处理程序(handle)来取得的。而这个处理程序,是在新建URL对象时候,(听过getURLStreamHandler)进行初始化的。

      可以发现,有2种方法可以得到协议处理程序。①、听过URLStreamHandlerFactory产生一个链接;②、听过系统变量java.protocol.handler.pkgs的值拼接上sun的默认实现sun.net.www.protocol来产生一个处理程序。

 

 

      第一种方法:setURLStreamHandlerFactory(URLStreamHandlerFactory)设置一个工厂类。

此工厂类也只需要实现一个方法.一般是在服务器的代码中设置,比如tomcat,jboss ,was等,用于注册服务器自己的协议,应用级没法设置,因为服务器已经设置过了,应用即使设置了也不起作用。

public interface URLStreamHandlerFactory {
        URLStreamHandler createURLStreamHandler(String protocol);
}

      第二种方法:听过启动参数-Djava.protocol.handler.pkgs设置要注册协议的自定义包的名称。多个协议包用“|”来分割。协议处理程序类名必须是Handler,而协议包的最后也是协议的名称。如自定义的http协议处理类完整名称,类似 cn.ljt.protocol.http.Handler,cn.ljt.protocol2.http.Handler。则启动参数-Djava.protocol.handler.pkgs设置为 cn.ljt.protocol|cn.ljt.protocol2。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值