QSYS2.HTTP_GET代理与请求头配置示例求助
在IBM i的QSYS2.HTTP_GET中配置请求头与代理的可行示例
问题背景
我在IBM i上通过SQL执行GET请求,目标URL为IBM官方文档示例地址:https://www.ibm.com/support/pages/sites/default/files/inline-files/xmldoc.xml,使用的DB2函数代码如下:
VALUES QSYS2.HTTP_GET( 'https://www.ibm.com/support/pages/sites/default/files/inline-files/xmldoc.xml', '{"headers":{"User-Agent":"IBM i HTTP function","Content-Type":"application/json","Accept":"*/*","Accept-Encoding":"gzip, deflate, br"}}' );
但由于需要同时配置请求头和代理,当前调用无法正常工作,且不清楚如何在QSYS2.HTTP_GET中设置代理选项。查阅资料仅找到基础请求头的使用案例,未发现包含代理配置的示例。
此前我已在RPGLE程序中通过cURL实现了带代理的请求(代码如下),但希望改用QSYS2.HTTP_GET而非第三方cURL库,同时Postman的代理配置尝试也未成功,急需一个包含请求头及代理配置的QSYS2.HTTP_GET可用示例。
原RPGLE的cURL实现代码:
'QSHONI/QSHCURL ' + 'CMDLINE(''' + '--insecure ' + '--proxy-ntlm ' + '--proxy "http://myproxy.net:8080" ' + '--header "Accept: application/json" ' + '--header "Content-Type: application/json" ' + '--data ''''{' + '"username": "' + connectUser + '",' + '"password": "' + connectPassword + '"' + '}'''' ' + ' "https://theUrlIAmSendingTheGETRequestTo" ' + '-o ' + filenameJson + ''') ' + 'IFSSTDOUT(*YES) ' + 'IFSFILE(''/CURL/something.txt'') ' + 'IFSOPT(*ADD)';
解决方案与示例代码
QSYS2.HTTP_GET的第二个参数为JSON格式的请求配置选项,可直接在其中添加代理相关字段,无需额外操作。以下是包含请求头和NTLM认证代理的完整可用示例:
VALUES QSYS2.HTTP_GET( 'https://www.ibm.com/support/pages/sites/default/files/inline-files/xmldoc.xml', '{"headers":{"User-Agent":"IBM i HTTP function","Content-Type":"application/json","Accept":"*/*","Accept-Encoding":"gzip, deflate, br"}, "proxy": "http://myproxy.net:8080", "proxy_auth": "NTLM", "proxy_user": "你的代理用户名", "proxy_password": "你的代理密码" }' );
参数说明
proxy:指定代理服务器的地址与端口,格式为http://代理地址:端口proxy_auth:代理认证类型,此处对应原cURL的--proxy-ntlm,设置为"NTLM";若为基本认证则设为"BASIC"proxy_user/proxy_password:代理服务器的用户名与密码headers字段保留原有请求头配置,无需修改
注意事项
- 确保IBM i版本为7.3及以上(该版本开始支持
QSYS2.HTTP_GET的代理参数) - 若代理无需认证,可移除
proxy_auth、proxy_user和proxy_password字段 - 保证JSON格式正确,注意引号、逗号的使用,避免语法错误
内容的提问来源于stack exchange,提问作者Jean-Adrien Oikonomou
相关产品推荐
相关产品推荐

