首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用apache bench提交带有json输入的GET请求?

如何使用apache bench提交带有json输入的GET请求?
EN

Stack Overflow用户
提问于 2013-06-22 03:04:22
回答 1查看 3.1K关注 0票数 3

对我们的服务的请求如下所示:

代码语言:javascript
复制
GET http://[SERVICE]/Node:[id].Build?format=mime1,mime2,...,mimeN&template-id=[templateid]
Accept: multipart/mixed
Content-Type: application/json
body: json document

我正在尝试使用ApacheBench来测试基准测试。下面是我使用的调用:

代码语言:javascript
复制
ab -n 10 -c 2 -T 'application/json' -H 'Accept: multipart/mixed' 'http://phx5qa01c-02b0.stratus.phx.qa.ebay.com/.Build?format=text/html,text/plain&template-id=29b1468f-c8c3-db23-2f6f-74e112795540'

此调用通过,并导致错误,因为预期的json数据不是there.Is的,在ab中有一种方法来随此请求一起提供必要的json。我看到有用于指定输入文件的-p和-u命令,但这些命令用于but和posts。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-22 12:04:40

我意识到这个答案晚了六年,但我认为这是值得发表的,因为我在一个与此非常相似的问题上碰壁,当时我试图对一个只返回JSON数据的URL进行负载测试,我的解决方案可能会帮助遇到这个问题的其他读者。我的问题是,当我不需要的时候,我一直在指定-H选项。这使得服务器不断地向我的AB请求发回一个HTTP 406响应码(不能接受)。在我的大部分故障排除过程中,当我不需要-T 'application/json'的时候,我也会把它放在AB请求中。它仅与PUT或POST结合使用(使用-p开关时)。所以我删除了-H和-T,它起作用了。话虽如此,我在这里看到了这两个问题。我们需要注意的是AB默认使用GET方法。

  1. 您可以通过向请求附加额外的自定义标头来约束AB,使用-H选项:-H 'Accept: multipart/mixed',这可能会使目标服务器认为这是一个无效的请求,并立即停止序列。除非你有一个非常好的理由,否则不要使用-H。
  2. 您正在使用-T选项:-T 'application/json',该选项仅在您将其与-p一起指定时才起作用,并且您的命令中没有-p,因为您发送的是GET而不是PUT或POST,所以无论如何也不会使用该选项。

因此,要解决这个问题,只需删除-T和-H选项,它就会正常工作。提醒其他读者:如果在Windows上,只要URL包含特殊字符(如"&“或"?”),请用双引号将其括起来。

代码语言:javascript
复制
ab -n 10 -c 2 'http://phx5qa01c-02b0.stratus.phx.qa.ebay.com/.Build?format=text/html,text/plain&template-id=29b1468f-c8c3-db23-2f6f-74e112795540'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17242560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档