将JMeter与REST Web服务和XML正文一起使用时,未检测到有效负载

时间:2013-05-06 16:37:24

标签: http-post jmeter

我正在使用JMeter进行负载测试。我的测试包含一个简单的POST请求。当我执行此请求时,服务器在其错误日志中显示No Payload Detected。我已经验证服务器正在接收Post请求,并且我在Raw Post Body中尝试了不同的文本。

接下来,为了确保它不是服务器的问题,我使用了一个不同的Http Request程序(Wiztools rest客户端)来发送具有相同内容的帖子。它有效,并且不会抛出No Payload Detected错误。

我目前的理论是JMeter和服务器都进行解析。我知道服务器会这样做,因为它正在寻找一小块数据,并且JMeter的解析会破坏这一小块数据。

因此,最后,我的问题是“JMeter做了什么解析?” 我已经找到了这个答案,我唯一知道它解析的是${VARNAME}

我发送的文字如下:

<IpReport xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="">
  <ProductReviewId>12345</ProductReviewId>
  <DepartmentCode>ABC</DepartmentCode>
  <ProductTitle>Test of a teaser</ProductTitle>
  <ProjectId>2</ProjectId>
  <ProductCodePD>ICS-1139150</ProductCodePD>
  <Priority>Pre-Approved</Priority>
  <Status>Approved</Status>
  <IpStatus>Submitted</IpStatus>
  <EvalStatus>Approved</EvalStatus>
  <EvalNotes>No Limitations - message from eval</EvalNotes>
  <Notes>Notes test</Notes>
  <IsInClarity>true</IsInClarity>
  <IsPreRelease>true</IsPreRelease>
  <IsApproved>true</IsApproved>
  <IsCOREvalIP>false</IsCOREvalIP>
  <Elements>
    <IpReportElement>
      <IpReportElementLineItemId>21774</IpReportElementLineItemId>
      <ElementType>ReportingStatement</ElementType>
      <Contributor>Sample Contributor</Contributor>
      <Description>test</Description>
      <LocationInProduct>test</LocationInProduct>
      <ReportingStatementId>7</ReportingStatementId>
      <IpCodeId>3</IpCodeId>
      <Links>
        <IpReportLink>
          <IpReportLinkId>25982</IpReportLinkId>
          <Name>Link</Name>
          <Url>https://example.org/</Url>
        </IpReportLink>
      </Links>
    </IpReportElement>
  </Elements>
  <CustomData>&lt;site&gt;ldsorg&lt;/site&gt;
&lt;site-root&gt;/preview/ldsorg/&lt;/site-root&gt;
&lt;correlation-document-id&gt;123456-eng&lt;/correlation-document-id&gt;
&lt;post-to-server&gt;l12773:9239&lt;/post-to-server&gt;
</CustomData>
  <ApprovalNumber>2013-1139150-I</ApprovalNumber>
  <EvalApprovalNumber>2013-1139150-E</EvalApprovalNumber>
</IpReport>

这是JMeter的截图。这是唯一的请求,没有其他配置元素: JMeter Screenshot

2 个答案:

答案 0 :(得分:8)

您可能还需要添加HTTP Header Manager作为HTTP Request的孩子来设置内容类型的标题:

Adding an HTTP Header

答案 1 :(得分:1)

  1. 首先。在上面的问题中,屏幕截图和请求文本中的部分请求都包含符号<>编码,而部分 - 不符号。而且您还在使用Content Encoding = UTF-8。似乎在这种情况下请求将被发送错误 您可以添加例如View Results Tree监听器并检查请求是如何从jmeter发送的。

  2. 您也可以尝试专用REST Sampler