繁体   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