文章目录
- 坑1:微软Azure数据湖landing zone API不支持TLSv1.1协议
- 注意JDK1.8高版本
- 坑2:拉取的文件内容开头带BOM
- 数据湖号称新一代数据仓库产品。
- 数据被写进数据湖文件之后会被自动同步到landing zone,可以通过landing zone API读取文件内容。
坑1:微软Azure数据湖landing zone API不支持TLSv1.1协议
JDK1.7默认使用TLSv1.1,向数据湖服务端发HTTPS GET请求,服务端会返回400错误。微软Azure数据湖产品仅支持TLSv1.2协议。
因此,需要要使用JDK1.8及以上版本。
如果非要用1.7,也可以这样:
System.setProperty("https.protocols", "TLSv1.2");
注意JDK1.8高版本
JDK1.8.0_304及以上版本也有个大坑:jdk1.8.0_xxx/jre/lib/security/java.security
文件jdk.tls.disabledAlgorithms
配置项中,将TLSv1.1
列为了禁用项。
使用该版本的JDK,默认将无法与一些仅支持TLSv1.1的SSL服务端建立通信。
可以直接删除其中的TLSv1, TLSv1.1
部分。
坑2:拉取的文件内容开头带BOM
以utf-8编码解析返回的文件内容,发现开头2个字节是0xfeff
。使用前需要去除BOM。
推荐使用Scanner(String input)
类来解析响应字符串。这样不用手动去除头部的BOM。