使用Progress的CONNECT命令连接失败,Postman可正常连接求排查
Progress CONNECT命令连接AWS API网关失败排查方案
核心问题分析
你当前的代码存在协议匹配、错误捕获缺失等问题,同时Postman自动处理了HTTP请求的细节逻辑,而Progress SOCKET需要手动配置这些内容,这是导致连接失败的主要原因。
具体排查与修正步骤
修正协议与端口匹配
AWS API网关默认使用HTTPS协议(443端口),你代码中使用的是80端口(HTTP),这是连接失败的常见诱因。Postman会自动识别API网关的HTTPS端点,而Progress需要明确指定HTTPS配置。修复CONNECT参数格式并捕获错误
原代码中NO-ERROR会掩盖连接错误,建议先移除该关键字,捕获具体错误信息定位问题:DEFINE VARIABLE hSocket123 AS HANDLE NO-UNDO. DEFINE VARIABLE cConnectionURL AS CHARACTER NO-UNDO. // 改为HTTPS端口并添加SSL参数 cConnectionURL = "-H ":U + "7d8p6n4c7b.execute-api.us-east-1.amazonaws.com" + " -S ":U + STRING(443) + " -SSL":U. CREATE SOCKET hSocket123. hSocket123:CONNECT(cConnectionURL). // 查看具体错误信息 IF hSocket123:CONNECTED() = FALSE THEN MESSAGE "连接失败,错误码: " + STRING(hSocket123:LAST-ERROR) VIEW-AS ALERT-BOX ERROR.常见错误码对应问题:
10061表示端口不通(协议不匹配),12175表示SSL握手失败(需调整SSL配置)。配置SSL支持
若Progress版本较旧,可能需要额外配置SSL参数:- 测试阶段可添加
"-SSLALLOWUNSAFE"参数跳过证书验证(生产环境禁用):cConnectionURL = "-H 7d8p6n4c7b.execute-api.us-east-1.amazonaws.com -S 443 -SSL -SSLALLOWUNSAFE". - AWS API网关常用TLS 1.2,可指定SSL版本:
"-SSLVERSION TLSv1.2"。
- 测试阶段可添加
构建完整的HTTP上传请求
连接成功后,需要手动构建与Postman一致的HTTP请求(以multipart/form-data上传xml为例):DEFINE VARIABLE cXmlContent AS CHARACTER NO-UNDO. DEFINE VARIABLE cBoundary AS CHARACTER NO-UNDO. DEFINE VARIABLE cApiPath AS CHARACTER NO-UNDO. // 替换为你的API网关实际路径 cApiPath = "/prod/your-endpoint". // 读取本地xml文件内容 INPUT FROM VALUE("informacao.xml"). IMPORT UNFORMATTED cXmlContent. INPUT CLOSE. // 构造multipart/form-data请求边界 cBoundary = "----ProgressFormBoundary" + STRING(TIMESTAMP). // 发送POST请求 IF hSocket123:CONNECTED() THEN DO: hSocket123:WRITE( "POST " + cApiPath + " HTTP/1.1~r~n" + "Host: 7d8p6n4c7b.execute-api.us-east-1.amazonaws.com~r~n" + "Content-Type: multipart/form-data; boundary=" + cBoundary + "~r~n" + "Content-Length: " + STRING(LENGTH(cXmlContent) + LENGTH(cBoundary)*2 + 60) + "~r~n~r~n" + "--" + cBoundary + "~r~n" + "Content-Disposition: form-data; name=""file""; filename=""informacao.xml""~r~n" + "Content-Type: application/xml~r~n~r~n" + cXmlContent + "~r~n" + "--" + cBoundary + "--~r~n" ). // 读取API响应 DEFINE VARIABLE cResponse AS CHARACTER NO-UNDO. hSocket123:READ(-1) TO cResponse. MESSAGE "API响应: " + cResponse VIEW-AS ALERT-BOX INFORMATION. END.检查网络环境一致性
确认运行Progress的机器与Postman所在机器网络环境一致:- 测试能否telnet到
7d8p6n4c7b.execute-api.us-east-1.amazonaws.com:443 - 排查是否有防火墙、代理服务器拦截HTTPS请求
- 确认Progress机器的DNS能正确解析该域名
- 测试能否telnet到
内容的提问来源于stack exchange,提问作者Reginaldo Leandro
相关产品推荐
相关产品推荐

