GET 以外の要求の多くには、要求本文にコンテンツが含まれています。
例えば、要求本文に含める情報として、自身の要求を使って作成した新入社員の詳細があるとします。
一般的に要求本文は単なるバイトのシーケンスです。Web サービスの場合は、通常は特定の詳細をエンコーディングしたテキストです。このテキストは、URL エンコーディングであったり、値のまとまりを JSON で表現したものである場合もあります。
前のセクションでも触れましたが、XPRIM_HttpRequest の Content プロパティには次のメソッドがあり、要求本文に希望のフォーマットのコンテンツを追加できます。
IBM i で AddFile を利用する際は、「制限事項」を参照してください。
例 - Web API を利用して新規の社員作成
会社に新規の社員情報を作成する公開 API があったとしましょう。
この URL は次のようなものになります。
http://yourcompany.com/api/hr/employee
この詳細を要求本文に追加する方法を見ていきます。最初の例では、詳細を URL エンコーディング形式の値として追加する方法が、そして、2 つ目の例では、コンテンツを JSON 文字列として追加する方法が示されています。
社員詳細を URL エンコーディング形式の値として追加
Define_Com Class(#XPRIM_HttpRequest) Name(#Req)
#Req.Content.AddUrlEncodedFormValue Name('givenName') Value(#EmpGivenName)
#Req.Content.AddUrlEncodedFormValue Name('lastName') Value(#EmpLastName)
#Req.Content.AddUrlEncodedFormValue Name('address') Value(#EmpAddress)
* 要求の実行 (POST 動詞)
#Req.DoPost Url('http://yourcompany.com/api/hr/employee')
社員詳細を JSON として追加
Define_Com Class(#XPRIM_HttpRequest) Name(#Req)
Define_Com Class(#XPRIM_JsonObject) Name(#JsonObject)
* JSON オブジェクトの構築
#JsonObject.InsertString('givenName' #EmpGivenName)
#JsonObject.InsertString('lastName' #EmpLastName)
#JsonObject.InsertString('address' #EmpAddress)
* 構築した JSON を要求本文に追加
#Req.Content.AddJsonObject(#JsonObject)
* 要求の実行 (POST 動詞)
#Req.DoPost Url('http://yourcompany.com/api/hr/employee')