application/x-www-form-urlencodedのBodyを構築してHTTPでのPOSTメソッドを実行するサンプルシナリオ
はじめに
WinActorのHTTPライブラリを使用して、application/x-www-form-urlencodedのBodyを構築してHTTPでのPOSTメソッドを実行するサンプルシナリオ(以降、本サンプルシナリオ)について説明します。
本サンプルシナリオの概要
本サンプルシナリオは、以下の処理を行います。
- 指定されたリスト(CSVファイル)を用いてapplication/x-www-form-urlencodedの要求のボディを作成します。
- 作成した要求のボディを用いて、指定されたURLに対してHTTPのPOSTメソッドを実行します。
使用するWinActorモジュール
本サンプルシナリオでは、主に以下のWinActorモジュールを使用します。
- 03_変数/01_csvファイル読み込み/csvファイル→変数値.ums6
- 99_外部サービス連携/02_HTTP関連/HTTP.ums6
- プチライブラリ/13_ファイル関連/文字コードをUTF-8にしてテキストファイルに書き込みをするライブラリ
- プチライブラリ/13_ファイル関連/指定した文字列をURLパーセントエンコーディングするライブラリ (プチライブラリはこちらからダウンロードできます)
本サンプルシナリオの想定レベル
本サンプルシナリオのドキュメントは、以下の技術レベルのユーザを対象としています。
- HTTPのPOSTリクエストにおける、application/x-www-form-urlencodedの仕様を理解している。
動作確認環境
本サンプルシナリオは以下の環境で動作確認しています。
- Windows 10
- WinActor 6.2.0
- Python 3.6.3 (本サンプルシナリオに添付のサンプルWebサーバープログラムを実行するために使用)
制約事項
- 本サンプルシナリオの動作を確認するために、application/x-www-form-urlencodedのPOSTリクエストを受け付けるWebサーバーが必要です。
(本サンプルシナリオには、Pythonで動作するWebサーバープログラムのサンプル(以下、サンプルWebサーバープログラム)を同梱しています。)
本サンプルシナリオの使い方
本サンプルシナリオの使い方は以下の通りです。
Step 1. サンプルWebサーバープログラムの起動
本サンプルシナリオは、手元のPCのみで動作を確認できるようにサンプルWebサーバープログラムを同梱しています。 サンプルWebサーバーの起動にはPython 3.6.3が必要となりますので、別途インストールしてください。
ダウンロードしたZIPファイルを展開します。
- 展開したフォルダにある「post_server.bat」をテキストエディタで開き、以下の修正を実施します。
- 2行目の"SET PYTHONROOTPATH="の後に、Pythonがインストールされている上のフォルダを指定します。(最後のパス区切り文字\は不要です)
例) SET PYTHONROOTPATH=C:\Users\user\AppData\Programs\Python
(Pythonが「C:\Users\user\AppData\Programs\Python\Python36」フォルダにインストールされている場合)
- 「post_server.bat」をダブルクリックして、サンプルWebサーバープログラムを起動します。
※「Python 続行するには何かキーを押してください」と表示された場合は、コントロールパネル-アプリと機能-アプリ実行エイリアス-python.exeをオフにしてください。
- Webブラウザを起動して、"http://localhost"へアクセスします。サンプルWebサーバーが正常に動作している場合は、ページ内に"HTTP GET OK"と表示されます。
※WebブラウザはサンプルWebサーバーの動作確認用のため、上記の表示が確認できたあとは閉じていただいて構いません。
Step 2. サンプルシナリオの読み込み
展開したフォルダにあるサンプルシナリオをWinActorで読み込みます。
Step 3. 動作に必要な変数を設定
本サンプルシナリオを実行するために必要な値を、変数一覧で設定します。
事前に設定が必要な変数は下記の2つです。
- PostURL
- HTTP POSTメソッドの宛先のURLを指定します。
例) http://localhost/
- BodyCSVファイル
- application/x-www-form-urlencodedの要求のボディに設定するパラメータのリストを収めたCSVファイルのファイルパス(絶対パス)を指定します。
本サンプルシナリオは、動作確認用のサンプルデータ(body.csv)を同梱しています。
例) C:\winactor\body.csv
Step 4. サンプルシナリオの実行
WinActorで本サンプルシナリオを実行します。
HTTP POSTメソッドの実行まで完了すると、本サンプルシナリオは終了します。
Step 5. サンプルシナリオの終了後
HTTP POSTメソッドの実行結果である応答内容(HTML)が、シナリオと同じフォルダに「Response.html」として出力されています。 Webブラウザで「Response.html」を開き、ページ内に"HTTP POST OK"と表示されていればPOSTに成功しています。 また、ページ内の「POST Body」に、本サンプルシナリオがサンプルWebサーバープログラムへ送信した要求のボディが表示されています。
トラブルシューティング
本サンプルシナリオでは、誤ったURLやファイル名/フォルダ名を指定した場合、エラーメッセージが出力されます。
詳細については、エラーメッセージ一覧を参照してください。
サンプルシナリオ解説
本サンプルシナリオで使用している実装テクニックについて解説します。
本サンプルシナリオでは、変数一覧のBodyCSVファイルに指定されたCSVファイルの内容に用い、application/x-www-form-urlencoded準拠のボディを生成しています。
- BodyCSVファイルで指定するCSVファイルの1行目は「name,value」という固定文字列です。 WinActorは、この行に基づいてcsvファイル→変数値.ums6ライブラリで値を取得しています。 BodyCSVファイルの2行目以降はリクエストパラメータです。Webサーバーへ転送したい内容を、「パラメータ名,パラメータ値」の順にカンマ区切りで指定します。(CSVの1レコード当たり1つの入力値) 各項目の内容は以下の通りです。(nameが指定されていないレコードについては、要求のボディへ出力されません)
- プチライブラリの指定した文字列をURLパーセントエンコーディングするライブラリを用いて、name(パラメータ名)及びvalue(パラメータ値)にURLパーセントエンコーディングを施し、=で連結します。
例)field1=%e5%80%a4%ef%bc%91
- BodyCSVファイルのレコード部が2行以上ある場合(複数のパラメータがある場合)は、各パラメータを&で連結します。
例)field1=%e5%80%a4%ef%bc%91&field2=%e5%80%a4%ef%bc%92
- BodyCSVファイルのすべてのレコードの処理が完了したら、Bodyファイルで指定されているファイルに書き出します。
なお、上記のURLパーセントエンコーディングの処理は、本サンプルシナリオの「application/x-www-form-urlencoded Body作成サブルーチン」が相当します。
HTTP POSTの実行
HTTP POSTメソッドは、 HTTP.ums6 ライブラリを利用して実行しています。
HTTP.ums6 ライブラリのプロパティのうち、「基本設定」タブで与える設定は以下の通りです。
- 「基本設定」の「メソッド」にPOSTを指定します。
- 「基本設定」の「URL」に、アクセス先のURLの値が格納されているPostURLを指定します。
「要求」で与える設定は以下の通りです。
- 「要求」の「ヘッダ」の「キー」に「Content-Type」を指定します。
- 「要求」の「ヘッダ」の「値」に「application/x-www-form-urlencoded」を指定します。
「応答」で与える設定は以下の通りです。
- 「応答」の「ボディ」に、応答結果の保存先ファイル(デフォルトはResponseファイルで、シナリオファイルと同一フォルダの「Response.html」ファイルを与えている)を指定します。
- 「応答」の「ステータスコード」に、応答結果のHTTP ステータスコードを入れる変数(デフォルトはステータスコード)を指定します。
変更履歴
版数 |
日付 |
修正内容 |
|
|
|
|
|
修正内容 |
---|
・注意事項を削除 ・ファイル名を「SS1911_7709_HTTPPostXWWWFormUrlencoded_1.0.1.zip」に変更 |
|
|
|
修正内容 |
---|
・サンプルWebサーバーの起動にはPython 3.6.3が必要の文言修正、起動しない場合はアプリ実行エイリアスの設定が必要の文言追加 ・ファイル名を「SS1911_7709_HTTPPostXWWWFormUrlencoded_1.0.2.zip」に変更 |
|