代理使用问题及排查方法
代理问题通常是由于客户端代理配置错误导致的。以下是一些常见的代理问题及其排查方法:
1. API 调用正常,但 curl 调用的域名不通
这种情况可能是代理服务器做了某种限制。请先排查代理服务器的配置。
2. 遇到 java.net.UnknownHostException 错误
如果遇到如下错误:
Caused by: java.net.UnknownHostException: xxxx.tencentcloudapi.com
必现:如果必现该错误,是用户所配置的 DNS 有误。
偶现:如果偶现该错误,是在某一时间段 DNS 服务器出现了问题。
3. 代理配置域名解析问题
如果代理配置了公网域名,解析时会直接走公网解析。例如:
tke.tencentcloudapi.com
4. 遇到 Unexpected response code for CONNECT: 400 错误
[TencentCloudSDKException]code: null message: requestId:null cause:java.io. IOException: Unexpected response code for CONNECT: 400
说明用户的代理配置有问题,请先调试正向代理相关配置。
5. 遇到 Content-Length 错误
[TencentCloudSDKException] code:Content-Length null message:Cannot transfer response body to string, because Content-Length is too large,or Content-Length and stream length disagree.requestId:null cause: javax.net.ssl.SSLException:Socket closed
直接原因是 socket 断开了连接。若是偶现且使用了代理,请用户先通过代理服务器检查原因。
6. 代理功能支持
若使用了代理功能,则需注意 SDK 只支持正向代理,不支持反向代理(例如 nginx 做反向代理服务器)。若使用反向代理,则会出现超时或报错等异常情况。
调试代理的基础步骤
在客户端输入以下指令,若能返回成功,则说明代理正常。
curl -v -x 代理ip:代理port https://cvm.tencentcloudapi.com