簡體   English   中英

使用JMeter向API發送HTTP請求中的JSON

[英]JSON in HTTP request to API using JMeter

我正在嘗試使用JMeter測試Web API。 Web服務器在JMeter和數據庫之間進行交互。 服務器應該從HTTP POST請求中的JSON中獲取參數,並將其解析為查詢。

relevent控制器中Web服務器的代碼如下所示:

    [HttpPost]
    [Route("my_awesome_route_path")]
    public async Task<List<QueryResult>> invoice([FromBody]InvoiceInfo invoiceInfo) 
    {
     query = string.Format("INSERT INTO my_awesome_table (`my`,`awesome`,`columns`) " +
                       "VALUES ({0},{1},{2});", invoiceinfo.awesomeparam1, ... ,invoiceinfo.awesomeparamn);

          noRowsInserted = await db.Database.ExecuteSqlCommandAsync(query);

然后在我的JMeter HTTP請求表單中,為上述控制器功能輸入了正確的路徑。 我將參數和文件上載選項卡留空,同時在主體數據選項卡中填充了以下內容:

${__FileToString(/my/awesome/file/path${__eval({awesome_json_file_name_with_no_dottxt_in_end_altough_it_has_it})}.txt,,)}

在沒有主體數據的情況下運行服務器確實可以達到我設置的斷點功能。 所以我知道路線很好。 將上面的代碼添加到正文數據會導致415錯誤-不支持的媒體類型。 這是JMeter的輸出文件提供的httpsample:

<httpSample t="8023" it="0" lt="8023" ct="2" ts="1544434665189" s="false" lb="HTTP Request" rc="415" rm="Unsupported Media Type" tn="Thread Group 1-3" dt="text" by="382" sby="281" ng="1" na="1">
<responseHeader class="java.lang.String">HTTP/1.1 415 Unsupported Media Type
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: todays_awesome_date
Content-Length: 103
</responseHeader>
  <requestHeader class="java.lang.String">Connection: keep-alive
Content-Length: 37
Content-Type: multipart/form-data; boundary=jBtzRzXGjCNVf_3UH8LfxguE6qR9_xH
Host: awesome_ip_add
User-Agent: Apache-HttpClient/4.5.6 (Java/1.8.0_191)
</requestHeader>
  <responseData class="java.lang.String">{"Message":"The request entity's media type 'multipart/form-data' is not supported for this resource.'}</responseData>
  <cookies class="java.lang.String"></cookies>
  <method class="java.lang.String">POST</method>
  <queryString class="java.lang.String">--jBtzRzXGjCNVf_3UH8LfxguE6qR9_xH--&#xd;
</queryString>
  <java.net.URL>awesome_route_path</java.net.URL>
</httpSample>

問題也不是sql語法。 當通過URL給出參數時,它可以從控制器中的另一個功能正常運行。

我還嘗試用路徑和參數名填充上載的文件,然后在參數中添加文件,並且它總是給出相同的錯誤代碼。 我只希望JSON參數填充該函數的參數,以便可以按代碼所示使用它。 我想念的是什么? 謝謝。

  1. HTTP標頭管理器添加為HTTP請求采樣器的子級
  2. 配置它以發送帶有application/json值的Content-Type標頭

    在此處輸入圖片說明

  3. 確保您在HTTP請求采樣器中具有Use multipart/form-data for POST

    在此處輸入圖片說明

詳細信息: REST API測試-如何正確執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM