2011-09-20 13 views
8

Tôi đang làm việc với JMeter để viết một số kiểm tra hiệu suất. Một trong những điều mà tôi cần làm là xây dựng một yêu cầu json rất lớn động và gửi nó như là yêu cầu POST paylod. Sử dụng tiền xử lý BSF, tôi có thể sửa đổi tải trọng động tuy nhiên chuỗi javascript của tôi đang được mã hóa, trong khi tôi muốn gửi nó mà không bị mã hóa.Gửi yêu cầu POST JSON với Bộ tiền xử lý BSF

Tôi không chắc chắn cách trình xử lý trước BSF có thể ngăn không cho nó được mã hóa. Lệnh Tôi hiện đang sử dụng để thay đổi yêu cầu tải trọng POST của tôi là như sau:

var jsonData = '[{"item":"value","something":"everything"}]'; 
sampler.addArgument("",jsonData); 

Tôi thực sự sẽ đánh giá cao nếu bạn có thể chỉ cho tôi một số ví dụ mà giải thích rõ ràng như thế nào preprocessors bsf dự kiến ​​sẽ được sử dụng.

Bất kỳ con trỏ nào để bỏ qua mã hóa cũng sẽ được đánh giá cao.

Trả lời

1

Kể từ JMeter 2,6 bạn có thể sử dụng cửa sổ yêu cầu RAW sử dụng bài Body tab.

Vì vậy, giải pháp của bạn là phải làm như sau:

  1. Trong BSF Sampler, đưa bạn JSON trong một biến:

    var jsonData = '[{"item":"value","something":"everything"}]'; 
    vars.putObject("jsonData",jsonData); 
    
  2. Trong bài viết Body, đưa:

    ${jsonData} 
    

Một tùy chọn khác sử dụng yo phương pháp ur là để đưa vào sử dụng BSFPreProcessor Beanshell ngôn ngữ (không javascript):

import org.apache.jmeter.protocol.http.util.HTTPArgument; 
String jsonData = "[{\"item\":\"value\",\"something\":\"everything\"}]"; 
HTTPArgument arg =new HTTPArgument("", jsonData, null, true); 
arg.setAlwaysEncoded(false); 
sampler.getArguments().addArgument(arg); 

Trân

Philippe M.

-1

bộ tài sản trên sampler của bạn "HTTPArgument.always_encode" false này nên vô hiệu hóa mã hóa tranh luận

+1

Giải pháp là không đầy đủ, xem dưới đây cho một đầy đủ –