2014-04-16 73 views
2

我使用j米進行負載測試,我必須通過http請求調用上傳圖像API並實現此操作,我必須將圖像轉換爲壓縮字節數組才能發送出去它通過http請求發送數據。如何發送字節數組在http請求中的Jmeter

任何人都可以幫助我如何通過Jmeter。

您的幫助真的很感激。

回答

4

有你如何能進行多種選擇:

  1. 您可以使用HTTP Raw Request採樣器(可通過網站JMeter Plugins),它給你什麼,在哪裏如何發送的完全控制。

  2. 您是否嘗試過爲HTTP請求取樣器啓用Use multipart/form-data for POST?這是如何根據RFC-1867上傳文件的方式。

  3. 如果您的用例是特定的並且以上都不適用,那麼您始終可以使用JMeter Scripting擴展。例如,如果你添加一個Beanshell Pre Processor到的東西等,從而進行文件上傳您的HTTP請求:

    FileInputStream in = new FileInputStream("/home/glinius/401.png"); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    byte[] buffer = new byte[1024]; 
    for (int i; (i = in.read(buffer)) != -1;) { 
        bos.write(buffer, 0, i); 
    } 
    in.close(); 
    byte[] imageData = bos.toByteArray(); 
    bos.close(); 
    vars.put("imageData", new String(imageData)); 
    

你就可以在你的POST請求添加${imageData}參數。

+0

感謝您的詳細信息。但我想知道如何在這種情況下使用HTTP Raw Request Sampler,我必須將圖像轉換爲gzip壓縮字節數組。 –

+0

另外,我遵循你的最後一點,以下是代碼片段: –

+0

import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; FileInputStream in = new FileInputStream(「C:\\ Users \\ i \\ Downloads \\ Screen 2.jpg」); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int size =(int)file.length(); byte [] buffer = new byte [size];對於(int i;(i = in.read(buffer))!= -1;){ bos.write(buffer,0,i); } in.close(); byte [] imageData = bos.toByteArray(); bos.close(); 變異。put(「imageData」,new String(imageData)); –

1

是的,我遵循這種方法「添加Beanshell預處理器到您的HTTP請求」,併成功。

對於我的情況,我還添加了一個「HTTP頭管理器」,指定:「Content-Encoding:gzip」,「Content-Type:」application/x-www-form-urlencoded「,」Accept:/「 並且,通過設置字符串編碼:vars.put( 「binaryData」,新的字符串(binThrift, 「ISO-8859-1」));

HTTP Header Manager

Beanshell Pre Processor

HTTP Request

Real Request

相關問題