我们的服务请求如下所示:
GET http://[SERVICE]/Node:[id].Build?format=mime1,mime2,...,mimeN&template-id=[templateid]
Accept: multipart/mixed
Content-Type: application/json
body: json document
我正在尝试使用ApacheBench来测试基准测试。这是我正在使用的电话:
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数据不存在。在ab中有一种方法可以提供必要的json以及此请求。我看到有-p和-u命令来指定输入文件,但这些命令用于put和posts。
答案 0 :(得分:0)
我意识到这个答案已经晚了六年,但是我认为值得一提,因为我在一个与此非常类似的问题上用力撞墙,在该问题中,我试图加载测试一个仅返回的URL JSON数据,而我的解决方案可能会帮助其他读者遇到此问题。我的问题是我不需要时一直指定-H选项。这样一直使服务器向我的AB请求发送回HTTP 406响应代码(不可接受)。在我的大部分故障排除过程中,我也将-T 'application/json'
保留在不需要的AB请求中。仅与PUT或POST结合使用(使用-p开关时)。所以我删除了-H和-T,并且它起作用了。说了这么多,我在这里看到了这两个问题。我们需要注意,AB默认使用GET方法。
您通过将额外的自定义标头附加到
通过使用-H选项-H 'Accept: multipart/mixed'
来请求
可能会使您的目标服务器认为这是无效请求,并停止
顺序就在那儿。除非您有-H,否则请不要使用-H
真的很好的理由。
您正在使用-T选项:-T 'application/json'
,其中
仅在与-p一起指定且您
在命令的任何地方都没有-p,因为您要发送的是GET而不是PUT或POST,所以您也不想使用它。
因此,要解决此问题,只需删除-T和-H选项,它就可以工作。 其他读者的提醒:如果在Windows上,则在此URL包含特殊字符(例如“&”或“?”)时,请用双引号引起来,在这种情况下。
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'