项目中需要在后台向第三方服务器发送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。

Java中如何注册协议相关推荐

  1. Java中使用KCP协议

    Java中使用KCP协议_何小成的成长记录-CSDN博客_java kcp Java中使用KCP协议--性能测试及应用_何小成的成长记录-CSDN博客_kcp协议 传统游戏项目一般使用TCP协议进行通 ...

  2. Java中使用SMTP协议发送电子邮件

    Java中使用SMTP协议发送电子邮件的具体的步骤: 1.首先需要获取发送邮件的Session对象 Session session = Session.getDefaultInstance(prope ...

  3. 在Java中实现SFTP协议文件传输的两种解决方案

    在Java中实现SFTP协议文件传输的两种解决方案 1.1 背景 1.2 关于 FTP /FTPS 1.3 关于SFTP 解决方案一:使用 JSch 库 解决方案二:使用sshj 库 这篇博文来聊聊在 ...

  4. Java中的Google协议缓冲区

    总览 协议缓冲区是一种用于结构化数据的开源编码机制. 它是由Google开发的,旨在实现语言/平台中立且可扩展. 在本文中,我的目的是介绍Java平台上下文中协议缓冲区的基本用法. Protobuff ...

  5. 在java中使用SFTP协议安全的传输文件

    本文介绍在Java中如何使用基于SSH的文件传输协议(SFTP)将文件从本地上传到远程服务器,或者将文件在两个服务器之间安全的传输.我们先来了解一下这几个协议 SSH 是较可靠,专为远程登录会话和其他 ...

  6. xmodem java_在Java中实现Xmodem协议

    这里是. 我在JModem source中找到了这个.如果你看看它写出数据的位置,你可以看到它做了SOH,blocknum,~blocknum,数据和校验和.它使用128的扇区大小.这些组合在一起构成 ...

  7. Java中通过TCP协议发送和接收数据-Socket编程

    TCP TCP协议是面向连接.保证高可靠性(数据无丢失.数据无失序.数据无错误.数据无重复到达)传输层协议. TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端 ...

  8. java基于http协议编程_Java中基于HTTP协议网络编程

    java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来访问Web服务功能,这篇博客,就跟大家分享一下,Java中的网络编程的知识,主要是学习下该java.net包下的API. U ...

  9. Objective-C 入门(七)协议 protocol(JAVA中的接口)

    Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...

最新文章

  1. Maven - Dynamic Web Module 3.0 requires Java 1.6 or newer.
  2. 【Python相关】Vaex :突破pandas,快速分析100GB大数据集
  3. c++实现多态的方法 虚表
  4. 少儿编程100讲轻松学python(六)-pycharm怎么汉化?
  5. ❤️《分布式 Dubbo+Zookenper+SpringBoot》(建议收藏)❤️
  6. 使用eeupdate修改机器网卡mac地址
  7. 谷歌翻译函数C#代码实现
  8. 使用ViewPager和PhotoView实现图片浏览
  9. Linux如何安装/卸载.deb文件(保姆级教程)
  10. android自定义View之气球碰撞效果
  11. [Python]自学笔记36:论一只爬虫的自我修养3:隐藏
  12. 新手如何在Git Hub上学习开源项目+社交
  13. SSM项目大作业——网上订餐系统
  14. 《图解密码技术》笔记2:历史上的密码-写一篇别人看不懂的文章
  15. VSCode中针对C语言的代码格式化配置
  16. Linux 音频驱动(三) ASoC音频驱动之Codec驱动
  17. SpringBoot整合knif4j Api文档
  18. python中text函数的语法_【01】Python基础语法
  19. 2022-2027年中国塑料齿轮行业发展监测及投资战略研究报告
  20. 面向对象:一起改bug,一起嘻嘻哈哈,快乐的人生你我共享!

热门文章

  1. 概率论-事件的独立性
  2. C++Primer第五版——习题答案详解
  3. 如何向深度学习模型中加入先验知识?
  4. 9-2 什么是零点漂移?产生零点漂移的主要原因是什么?差动放大电路为什么能抑制零点漂移?
  5. CSV文件在网络爬虫中的应用
  6. GrapeCity Documents for Word[GcWord]
  7. 2020年回顾与2021年展望
  8. Ada语言-标识符和注释
  9. 揭秘弥勒珠芽魔芋多叶生长的相关因素—反式玉米素核苷浓度
  10. 江西现代职业技术学院单招计算机网络技术,江西现代职业技术学院2020年单招录取分数线...