その他
    ホーム 技術発信 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メソッドも同様の動きをするようなので、同じ方法で解決できます。