WinActor

2019.10.17
サンプルシナリオ 外部サービス連携
multipart/form-dataのBodyを構築してHTTPでのPOSTメソッドを実行するサンプルシナリオ

WinActorのHTTPライブラリを使用して、multipart/form-dataのBodyを構築してHTTPでのPOSTメソッドを実行するサンプルシナリオとなります。

本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。

サンプルシナリオ概要

multipart/form-dataのBodyを構築してHTTPでのPOSTメソッドを実行するサンプルシナリオ

multipart/form-dataのBodyを構築してHTTPでのPOSTメソッドを実行するサンプルシナリオ

はじめに

WinActorのHTTPライブラリを使用して、multipart/form-dataのBodyを構築してHTTPでのPOSTメソッドを実行するサンプルシナリオ(以降、本サンプルシナリオ)について説明します。

本サンプルシナリオの概要

本サンプルシナリオは、以下の処理を行います。

  • 指定されたリスト(CSVファイル)を用いてmultipart/form-dataのBodyを構築します。
  • 指定されたURLに対して、作成したBodyを用いてHTTPのPOSTメソッドを実行します。

使用するWinActorモジュール

本サンプルシナリオでは、主に以下のWinActorモジュールを使用します。

  • 03_変数/01_csvファイル読み込み/csvファイル→変数値.ums6
  • 99_外部サービス連携/02_HTTP関連/HTTP.ums6
  • プチライブラリ/13_ファイル関連/文字コードをUTF-8にしてテキストファイルに書き込みをするライブラリ
    (プチライブラリはこちらからダウンロード可能です。)

本サンプルシナリオの想定レベル

本サンプルシナリオのドキュメントは、以下の技術レベルのユーザを対象としています。

  • HTTPのPOSTリクエストにおける、multipart/form-dataの仕様を理解している。

動作確認環境

本サンプルシナリオは以下の環境で動作確認しています。

  • Windows 10
  • WinActor 6.2.0
  • Python 3.6.3 (サンプルWebサーバーでのみ利用)

制約事項

  • 本サンプルシナリオの動作確認にはmultipart/form-dataのPOSTリクエストを受け付けるWebサーバが必要となります。
  • HTTP.ums6 ライブラリではBodyファイルとしてバイナリデータを含んだファイルを取り扱えません。そのため、POSTリクエストで送信できるデータはUTF-8形式のテキストデータのみとなります。

本サンプルシナリオの使い方

本サンプルシナリオの使い方は以下の通りです。

Step 1. サンプルWebサーバーの起動

本サンプルシナリオの動作を簡易的に行えるように、サンプルWebサーバを同梱しています。 サンプルWebサーバーの起動にはPython 3.6.3が必要となりますので、別途インストールしてください。

ダウンロードしたZIPファイルを展開します。

  • 展開したフォルダに含まれている「post_server.bat」をテキストエディタで開き、以下を修正します。
    2行目の"SET PYTHONROOTPATH="の後にPythonがインストールされている上のフォルダを指定します。
    (最後のパス区切り文字\は不要です)
    例)SET PYTHONROOTPATH=C:\Users\user\AppData\Programs\Python
    (C:\Users\user\AppData\Programs\Python\Python36フォルダにPythonがインストールされている場合)
  • 「post_server.bat」をダブルクリックして起動します。
    ※「Python 続行するには何かキーを押してください」と表示された場合は、コントロールパネル-アプリと機能-アプリ実行エイリアス-python.exeをオフにしてください。
  • Webブラウザを起動して、"http://localhost" と入力します。 "HTTP GET OK"とページに表示されれば成功です。 ※サンプルWebサーバーの起動確認のため、上記が表示されれば、Webブラウザを閉じて構いません。

Step 2. サンプルシナリオの読み込み

展開したフォルダに含まれている本サンプルシナリオをWinActorで読み込みます。

Step 3. 動作に必要な変数を設定

本サンプルシナリオを実行するために必要な値を、変数一覧で更新します。
本サンプルシナリオの実行にあたり、事前に設定が必要な変数は下記の3つです。

  • PostURL
    • HTTPでのPOSTメソッドを実行するURLを指定します。
      例)http://localhost/
  • Bodyリストファイル
    • multipart/form-dataのBodyに書き込む文字列をリストしたCSVファイルのファイル名を指定します。
      絶対パスで指定してください。 本サンプルシナリオの動作確認用に、サンプルデータ(bodyList.csv)を同梱しています。
      例)C:\winactor\bodyList.csv
  • バウンダリ
    • multipart/form-dataのBodyのバウンダリに利用されるユニークな文字列を指定します。
      例)C0E0FF5A-8C20-42FB-B351-EF653EA049F7
変数表示画面
変数表示画面

Step 4. サンプルシナリオの実行

WinActorで本サンプルシナリオを実行開始します。 HTTPのPOSTメソッドが完了すると、本サンプルシナリオは終了します。

Step 5. サンプルシナリオの終了後

本サンプルシナリオの実行終了後、HTTPのPOSTメソッドの応答内容のWebページがシナリオと同じフォルダに作成されます。 ファイル名は「Response.html」となります。 Webブラウザで開き"HTTP POST OK"とページに表示されていればPOSTに成功しています。 また、ページのPOST Bodyに作成されたBodyが表示されています。

トラブルシューティング

本サンプルシナリオでは、誤ったURLやファイル名/フォルダ名を指定した場合、エラーメッセージが出力されます。

詳細については、エラーメッセージ一覧を参照してください。

サンプルシナリオ解説

本サンプルシナリオで使用している実装テクニックについて説明します。

multipart/form-dataのBody生成

本サンプルシナリオでは、変数一覧のBodyリストファイルに指定されたCSVファイルから、multipart/form-dataの生成を実現しています。 Bodyリストファイルの値に指定するファイルは以下のフォーマットを指定します。

  • CSVファイルの1行目は「BodyData,ContentDispositionName,ContentDispositionFileName,ContentType」固定となります。
    この行を用いてcsvファイル→変数値.ums6ライブラリで値を取得しています。
    2行目以降に転送したい内容をカンマ区切りで入力していきます。(CSVの1レコード当たり1part)
    各項目の内容は以下の通りです。(すべての指定が無いレコードが読み込まれた場合、Bodyへの出力は行われません。)

    • BodyData : 転送したい文字列を指定します。(複数行の文字列の場合、ダブルクォートで文字列を囲み改行します)
      例)TEST

    • ContentDispositionName : データの名前を指定します。空欄の場合はnameが出力されません。(各パートのContent-Dispositionのnameで出力されます)
      例)testText

    • ContentDispositionFileName : データのファイル名を指定します。空欄の場合はfilenameが出力されません。(各パートのContent-Dispositionのfilenameで出力されます)
      例)testText.txt

    • ContentType : データのメディアタイプ(MIMEタイプ)を指定します。空欄の場合はContent-Typeが出力されません。(各パートのContent-Typeで出力されます)
      例)text/plain

  • 上記の内容をシナリオファイルと同一フォルダの「Body」ファイルにテキストファイル追記.ums6 ライブラリで追記していきます。(処理の最初で、「Body」ファイルは空にしています。)
  • 各partの境界文字列は変数一覧にあるバウンダリで指定します。
  • Bodyファイルは、HTTP.ums6 ライブラリで転送可能になるように、プチライブラリの「文字コードをUTF-8にしてテキストファイルに書き込みをするライブラリ 」を利用して文字コードをShift-JISコードからUTF-8に変換します。

なお、本サンプルシナリオの「Body作成サブルーチン」を適宜必要に応じて変更することで、multipart/form-dataのBodyを変更できます。

Body作成サブルーチン
Body作成サブルーチン

HTTP POSTの実行

本サンプルシナリオでのHTTP POSTメソッドの実行は HTTP.ums6 ライブラリを利用しています。

HTTP POSTメソッド実行グループ
HTTP POSTメソッド実行グループ

HTTP.ums6 ライブラリに以下を指定することでmultipart/form-dataのPOST送信を実現しています。

  • POSTメソッドの実行のため、「基本設定」の「メソッド」はPOSTを指定し、「URL」にアクセス先のURLの値を格納したPostURLを指定しています。
HTTP.ums6の基本設定
HTTP.ums6の基本設定
  • 「要求」の「ヘッダ」では、キー:Content-Typeで指定した値、型:文字列、値:HeaderContentTypeで指定した値を指定しています。
HTTP.ums6の要求のヘッダ
HTTP.ums6の要求のヘッダ

上記のHeaderContentTypeには、「multipart/form-data」と「boundary」およびバウンダリ文字列を指定した値が格納されており、 この文字列は変数一覧のバウンダリを用いてサンプルシナリオの先頭(初期化処理グループ)で作成しています。

初期化処理グループ
初期化処理グループ
HTTP.ums6の要求のボディ
HTTP.ums6の要求のボディ
  • 「応答」の「ボディ」には、応答結果を入れるレスポンスファイル(シナリオファイルと同一フォルダの「Response.html」ファイル)を指定しています。
HTTP.ums6の応答のボディ
HTTP.ums6の応答のボディ
  • 「応答」の「ステータスコード」には、応答結果のHTTP ステータスコードを入れる変数を設定しています。
HTTP.ums6の応答のステータスコード
HTTP.ums6の応答のステータスコード

変更履歴

版数
日付
修正内容
版数
1.0版
日付
2019/10/17
修正内容
初版
版数
1.1版
日付
2021/05/17
修正内容

WinActor 6.1.0以前を利用した場合に発生する事象の対応方法説明文を修正

版数
1.2版
日付
2023/6/12
修正内容

・注意事項を削除
・ファイル名を「SS1910_7270_HTTPPostMultipartFormdata_1.0.1.zip」に変更

版数
1.3版
日付
2023/08/30
修正内容

・サンプルWebサーバーが起動しない場合はアプリ実行エイリアスの設定が必要の文言追加
・ファイル名を「SS1910_7270_HTTPPostMultipartFormdata_1.0.2.zip」に変更

本コンテンツをダウンロードする前にこちらの利用条件を必ずご確認いただき、内容に同意をしたうえでダウンロードしてください。 また、"コンテンツの利用条件"は下のボタンからダウンロードし、お手元で保管してください。

"外部サービス連携"に関連するその他のサンプルシナリオ

サンプルシナリオ一覧へ戻る
当サイトでは、お客さまに最適なユーザー体験をご提供するためにCookieを使用しています。当サイトをご利用いただくことにより、お客さまがCookieの使用に同意されたものとみなします。詳細は、「プライバシーポリシー」をご確認ください。