You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SQLRPGLE中QSYS2.HTTP_GET调用API返回400错误求助

SQLRPGLE调用QSYS2.HTTP_GET返回400 Bad Request错误排查

我在SQLRPGLE中使用QSYS2.HTTP_GET调用外部API时,服务器返回400(Bad Request)错误。通过变量拼接请求URL和参数选项,检查后未发现明显语法问题,但始终无法得到200成功响应,希望排查错误原因。

代码示例

H*
D*-------------------------------------------------------------------------
D*-------------------------------------------------------------------------
DURL1             S            200A
DURL2             S            200A
Dxxxx             S             30A
Dxzzz             S             30A
Daaa              S             30A
Dbbb              S             30A
Dbbbsdn           S             30A
Dbbbid           S             30A
DOPTA1            S             30A
C*-------------------------------------------------------------------------
C
C                   EVAL      OPTA1='{"sslTolerate":"true"}'
C                   EVAL      xxxx='xxxx=xxxxxx'
C                   EVAL      zzzz='&zzzz=c=xxxxx'
C                   EVAL      ='&bbb=xxxxxx'
C                   EVAL      aaa='&aaa=TESTSMS'
C                   EVAL      bbb='&bbbsdn=xxxxxxxx'
C                   EVAL      bbbsid='&bbbsid=xxxxxx'
C                   EVAL      URL1='http://xyz.xxxx.com'+
C                                  '/xxxxapi/xxxx/sss.com?'+
C                                  %TRIM(%CHAR(xxxx))+
C                                  %TRIM(%CHAR(zzzz))+
C                                  %TRIM(%CHAR(aaa))+
C                                  %TRIM(%CHAR(bbb))+
C                                  %TRIM(%CHAR(bbbsdn))+
C                                  %TRIM(%CHAR(bbbsid))
C                   EVAL      URL2=%TRIM(%CHAR(URL1))
C/EXEC SQL
C+                  SET OPTION COMMIT=*NONE
C/END-EXEC
C/EXEC SQL
C+                   INSERT INTO QGPL/SMSTST
C+                   SELECT CAST(QSYS2.HTTP_GET(:URL2,:OPTA1)
C+                   AS VARCHAR(2048) CCSID 37)
C+                   FROM SYSIBM.SYSDUMMY1
C/END-EXEC
C                   SETON                                          LR 

排查方向

  • 变量定义与使用不匹配:代码中定义了变量xzzz,但赋值时用的是zzzz,会导致该参数未被正确拼接进URL,缺失必要参数触发400错误。
  • 无效赋值语句:存在一行EVAL ='&bbb=xxxxxx',未指定目标变量,这行代码不会生效,对应参数缺失。
  • URL长度限制:URL1定义为200A,拼接后的URL可能超出长度被截断,导致请求格式错误。建议增大URL1的长度(如设置为500A)。
  • 参数拼接正确性:检查参数前缀&的使用,确保第一个参数无&,后续参数正确添加;同时确认所有参数都被正确赋值并拼接。
  • OPTA1变量容量:OPTA1定义为30A,当前配置字符串长度虽未超限,但如果后续扩展选项可能不够,建议适当增大容量。
  • URL编码问题:若参数值包含特殊字符(如空格、中文等),需手动进行URL编码,QSYS2.HTTP_GET不会自动处理特殊字符编码,未编码会导致请求格式错误。

内容的提问来源于stack exchange,提问作者khairul anam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:09:57