メニューボタン
サポートチーム便り2026.01.28

IBM i からWebAPIを実行してみたがエラーになってしまう!

Question

IBM i (AS/400)からWebAPIを実行したいと思っています。

具体的には「QSYS2.HTTP_GET()」を使用しようとしているのですが、HTTP、HTTPSどちらに対してもエラーとなってしまいます。

何をどうしたらよいのかわからず、対処方法を教えていただけますでしょうか。

Answer

WebAPIの使用がうまくいかない原因について、主に次の 3 点が考えられます。

  1. 大文字・小文字が正しく認識されていない
  2. IBM i (AS/400)が外部と接続ができない環境になっている
  3. SSL認証に失敗している

以下、順番に見ていきましょう。


  1. 大文字小文字が正しく認識されていない

    「QSYS2.HTTP_GET()」を使用する場合、小文字が扱える必要があります。

    小文字を扱うためには、使用可能なコード化文字セットID(CCSID)になっているかどうかを確認する必要があります。

    システム値「QCCSID」及びユーザープロファイルの「CCSID」の値を確認してください。

    • システム値:WRKSYSVAL QCCCSID

      デフォルトでは「65535」になっていることが多いですが、「65535」の場合小文字を使用することができません。

      もし「65535」が設定されている場合は、ユーザープロファイル単位でCCSIDを変更してください。

      なお、日本語環境の場合、「5035」「1399」であれば小文字を使用できます。

    • ユーザープロファイル:DSPUSRPRF

      ページダウンし「コード化文字セットID」の値を確認します。

      もし「*SYSVAL」となっている場合は、システム値の設定が参照されますので、システム値が「65535」の場合は、ユーザープロファイル側で値を変更する必要があります。

      コマンド「CHGUSRPRF」にて、「5035」あるいは「1399」に変更してください

    小文字が正しく認識できていれば、非SSL環境である「HTTP」通信では応答が返ってくる可能性があります。

    まずは HTTP にて動作確認を行ってみてください。

  2. IBM i (AS/400)が外部と接続ができない環境になっている

    お使いのIBM i(AS/400)が社外と通信可能な環境にあるかどうかも重要なポイントです。

    例えば以下の疎通確認コマンドを実行し、応答が返ってくるかを確認してください。

    • コマンド「CALL QCMD」を実行する
    • コマンド「PING RMTSYS('8.8.8.8')」を実行する

    応答が返ってくれば外部接続が可能な環境であると判断できます。

    応答がない場合は、まずネットワーク環境の確認が必要になります。

    また、名前解決ができていない場合も考えられますので、必要に応じてコマンド「CFGTCP」の「12. TCP/IP ドメイン情報の変更」にてDNS設定もご確認ください。

  3. SSL認証に失敗している

    「HTTP」では成功するものの、「HTTPS」でエラーになる場合は、SSL の認証に失敗している可能性があります。

    SSL接続をするためには、対象のCA証明書が必要になります。

    例えば今回以下のサイトにアクセスするとします。
    https://www.somesite.com/authorized_info.html

    このサイトの証明書情報を確認し、必要な証明書をエクスポートします。

    今回の例では「ISRG Root X1」がCA証明書に該当します。

    この証明書を、IBM i (AS/400)に登録する必要があります。

    登録手順については、以前の記事で紹介していますので、以下を参考に設定を行ってください。
    https://www.e-bellnet.com/category/technology/2510/2510-04.html


いかがでしょうか。Web APIはうまく実行できるようになりましたでしょうか。

昨今ではWeb APIへの関心が高くなってきているものと思いますので、もしテストしてみてうまくいかない場合は、上記のあたりをご確認いただければと思います。

by . かんぴょう木綿さん

あわせて読みたい記事

PAGE TOP