【curl】XML形式データをPOST送信する方法の紹介

今回は、「cURL(client for URL)」コマンドを使用して、HTTPリクエストのPOSTメソッドでXML形式データを送信する方法を紹介していきます。

スポンサーリンク

検証環境

検証に使用した環境/ライブラリを次に記載します。

  • cURL
    • バージョン:7.68.0 (x86_64-pc-linux-gnu)

送信方法

リクエスト行の指定方法

HTTPリクエストでPOSTメソッドを使用するための指定方法は、次のようになります。

$ curl http://example.com -X POST

「-X」オプションは、HTTPリクエストのメソッド種別を指定することができます。指定しない場合は、「GET」メソッドが指定されたことになります。

ヘッダーの指定方法

HTTPリクエストでXML形式データとして送信するための指定方法は、次のようになります。

$ curl http://example.com -X POST -H 'Content-Type: application/xml'

「-H」オプションは、HTTPリクエストのヘッダーを指定することができます。XML形式で送信する場合は、次のいずれかの値を指定することになります。

  • application/xml
  • text/xml

ボディの指定方法

HTTPリクエストでボディのデータを指定する方法は「-d」オプションを指定します。指定方法としては次の方法があります。

  1. ファイル指定
  2. 直接指定(1行指定)
  3. 直接指定(複数行指定)

ファイル指定

ファイルを指定する場合は、次のように指定します。

$ curl http://example.com -X POST -H 'Content-Type: application/xml' -d @request.xml

「-d」オプションの後に「@ファイル名」を指定することで、ファイル内容をボディのデータとして送信することができます。

直接指定(1行指定)

直接指定する場合は、次のように指定します。

$ curl http://example.com -X POST -H 'Content-Type: application/xml' -d '<request><example>ex
ample</example></request>'

「-d」オプションの後に送信内容を指定することで、指定した内容をボディのデータとして送信することができます。

この指定方法は、1行にすべてのリクエスト情報を指定する必要があります。送信するXML形式データがフォーマットされている場合は、1行にまとめ直す必要があります。

直接指定(複数行指定)

複数行を直接指定する場合は、次のように指定します。

$ curl http://example.com -X POST -H 'Content-Type: application/xml' -d @- << EOF
> <request>
>   <example>example</example>
> </request>
> EOF

「-d」オプションの後に「@-」指定することで、標準入出力から情報をボディのデータとして送信することができます。このオプションとヒアドキュメントを使用することで、複数行のXML形式データを指定することができるようになります。

例では、送信するXML形式データの前後に「EOF」を入力することで指定したXML形式データが送信できます。

ヒアドキュメントで使用している「EOF」という文字列は、最初と最後が同じ文字ならなんでもよいです。

まとめ

「curl」コマンドを使用して、HTTPリクエストのPOSTメソッドでXML形式データを送信する方法を紹介しました。