本地可以 curl 通,本地代码也可以通。
服务器 curl 通,服务器代码不可以通。
原因:
java 未配置代理,或 代理配错了。
1 | [root@easy-promo-756f954644-n9hvd easy-promo]# vi A.java |
配置 java代理的两种方式:
1(推荐:java -D 参数配置)、六个 -D 参数。-Dhttps.proxyHost=10.71.252.20 -Dhttps.proxyPort=3128 -Dhttp.proxyHost=10.71.252.20 -Dhttp.proxyPort=3128 -Dhttp.nonProxyHosts=10.0.0.0/8,40.73.0.0/16,service.azk8s.cn,dktapp.cloud,subsidia.org,dktinfra.cloud -Dhttps.nonProxyHosts=10.0.0.0/8,40.73.0.0/16,service.azk8s.cn,dktapp.cloud,subsidia.org,dktinfra.cloud
》》》Dockerfile 配置
》》》命令行
2(了解:System.setProperty 配置)、调用前,设置系统环境变量。(其实上面的 -D 参数也是读取到 System 中,只不过是初始化就读取了)
1 | System.setProperty("http.proxyHost", "10.71.252.20"); |
curl 代理(给 Linux 配置 env 环境变量):
1 | https_proxy: "http://10.71.252.20:3128" |
坑:
1、配置的 proxyHost 不能加上 http 协议,直接写域名或 ip地址即可。
》》》错误配置
ENV PROXY=”-Dhttps.proxyHost=http://10.71.252.20 -Dhttps.proxyPort=3128 -Dhttp.proxyHost=http://10.71.252.20 -Dhttp.proxyPort=3128 -Dhttp.nonProxyHosts=10.0.0.0/8,40.73.0.0/16,service.azk8s.cn,dktapp.cloud,subsidia.org,dktinfra.cloud -Dhttps.nonProxyHosts=10.0.0.0/8,40.73.0.0/16,service.azk8s.cn,dktapp.cloud,subsidia.org,dktinfra.cloud”
》》》正确配置
ENV PROXY=”-Dhttps.proxyHost=10.71.252.20 -Dhttps.proxyPort=3128 -Dhttp.proxyHost=10.71.252.20 -Dhttp.proxyPort=3128 -Dhttp.nonProxyHosts=10.0.0.0/8,40.73.0.0/16,service.azk8s.cn,dktapp.cloud,subsidia.org,dktinfra.cloud -Dhttps.nonProxyHosts=10.0.0.0/8,40.73.0.0/16,service.azk8s.cn,dktapp.cloud,subsidia.org,dktinfra.cloud”
2、访问的地址不论是 http 还是 https,把代理都配上,在上面配置 java代理的两种方式
,里面说了,一共六个参数,最好都配置上。
(避免:你访问的 https 只配置了 http 代理)
java原生代码
直接把 java 放服务器 java环境,跑起来。避免繁琐的打包,走 CI/CD,再发送请求进行测试。
1 | vi A.java |
1 | package com.decathlon.easypromo; |