ホーム DoRuby 【JMeter】HTTPリクエストでPATCHメソッドを使用する

【JMeter】HTTPリクエストでPATCHメソッドを使用する

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Apache JMeterでPATCHメソッドを使用する方法

 概要

Apache JMeterでPATCHメソッドを使用したときに、色々うまくいかなかったので、試したことを記録しておきます。

JMeterの基本的な使い方については割愛します。

【Version】

Apache JMeter Version 2.13

 はじめに

JMeterでは、HTTPプロキシサーバを使用すると、ブラウザの操作を記録することができます。

その際、PATCHメソッドを使用している画面の操作で、エラーが発生しました。

記録されたJMeterのHTTPリクエストサンプラーを見てみると、メソッドがPATCHになっており、Parametersにリクエストで送るパラメータが表示されています。

 解析

一見問題なさそうですが、このHTTPリクエストを実行して、リスナー -> 結果をツリーで表示の「リクエスト」タブを見てみると、

PATCH data:

Content-Length: 0

となっており、リクエストボディが送信されていないようです。

ちなみに、メソッドをPOSTに変更して実行すると、リクエストで送るパラメータに設定した値が送信されていることが確認できます。

 解決方法

Parametersタブの隣にあるBody Dataタブを押すと、Warningメッセージが出ます。ここで、リクエストで送るパラメータをすべて削除するとBody Dataタブに切り替えることができます。

ここに、リクエストボディの値をそのまま貼り付けます。

(筆者はChromeの検証ツールからForm Dataをコピーしました。エンコードされた値を貼り付ける必要があるので、view sourceからコピー。)

 実行

再度実行してみます。

リスナー -> 結果をツリーで表示の「リクエスト」タブを見てみると、

PATCH data:

XXXXXXX%5AAAAAAAAAAAAAA%5D=true

Content-Length: 31

リクエストボディが正常に送信できました。

結果も正常終了になっています。

 余談

本題とは直接関係ありませんが、このとき動かしていたWebアプリはRailsアプリで、Ajaxでフォームの内容を送信していたので、「X-CSRF-Token」をリクエストヘッダーに設定する必要もありました。

以上です。

PUTメソッドも同様の動きをするようなので、同じ方法で解決できます。

記事を共有

最近人気な記事