2016-06-28 50 views
0

LRスクリプトがあり、ファイルをダウンロードするためにREST APIを呼び出すために使用しています。ファイルは正常にダウンロードされますが、確認のためにダウンロードしたファイルサイズの値も必要です。ここでは、loadrunnerコンソールに表示されています。LoadRunnerのweb_custom_requestの応答から値を取得する方法

Action.c(50): web_custom_request("GetImage") was successful, 2373709 body bytes, 528 header bytes, 99 chunking overhead bytes. 

どのようにして値2373709を得ることができますか?私は、以下のコードを使用してみましたが、それが返すサイズは上記と少し異なり、目的を解決していません。

HttpDownLoadSize=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); 
lr_output_message("File Size %i", HttpDownLoadSize); 

助けてください。事前にお手伝いしてくれてありがとう。

+0

だから、ロードランナーにおける身体バイトの値だけを取得する方法はありません? –

答えて

2

HTTP_INFO_DOWNLOAD_SIZEプロパティには、最後のHTTP応答の合計ダウンロードサイズが格納されます。これには、すべての応答のヘッダーと本文の合計サイズ、および通信のオーバーヘッドが含まれます。 2373709 body bytesは、特定のステップで取得されたすべての応答の合計ボディサイズです。したがって、カスタム要求ステップで複数の要求/応答がある場合、この数値は実際のファイルサイズより大きくなります。

レスポンスのボディサイズを検証することをおすすめします。それを取得するための標準APIはありません(少なくとも、LR 12.53、最新の利用可能なバージョン)。私の見ている限り、あなたの応答はチャンクされているので、これを行うための効率的な方法を提案することはできません。ここでは、一時的なバッファに全身を保存するに基づいて、むしろ非効率的な方法は、(!2回)である:

unsigned long length = 0; 
char* tmp = 0; 

web_reg_save_param_ex(
    "ParamName=Body", 
    "LB=", 
    "RB=",     
    SEARCH_FILTERS, 
    "Scope=Body", 
    "RelFrameID=1", 
    LAST); 

web_custom_request(...); 

lr_eval_string_ext("{Body}", strlen("{Body}"), &tmp, &length, 0, 0, -1); 
lr_output("body length is %d", length); 
lr_eval_string_ext_free(&tmp); 

また、あなたはweb_set_max_html_param_len()を使用して最大HTMLパラメータの長さを長くする必要がある場合があります。あなたがContent-Lengthヘッダを含む非chuncked非圧縮応答があった場合

しかし、あなたはより効率的に、それを検証することができます:

web_reg_find("Text=Content-Length: 2373709", 
    "Search=Headers", 
    "RelFrameID=1", 
    LAST); 
web_custom_request(...); 
+0

あなたのポストに気づいたときに私が解決策を見つけたので、私は自分自身の疑問に答えようとしていました。あなたが言及したことは正しいです、私は同じことをしました。ボディバイトの長さを取得するために 'lr_eval_string_ext'を使用し、実際に問題を解決しました。あなたのお返事ありがとうございました。 –

関連する問題