我正在尝试使用node-soap与 Amazon Mechanical Turk 进行通信。我用这个 wsdl初始化了 soap 客户端,但是当我尝试调用Mechanical turk API 中列出的任何操作时client.<SomeOperation>(...)
,我发现我得到的响应不包含 API 调用的结果。API 文档说响应应该包含一个 "Result element",但是我发现我得到了看起来像这样的无用结果:
<HelpResponse xmlns="http://requester.mturk.amazonaws.com/doc/2014-08-15">
<OperationRequest>
<RequestId>(something)</RequestId>
</OperationRequest>
<Information>
<Request>
<IsValid>True</IsValid>
</Request>
<OperationInformation>
<Name>Please see our online documentation at http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=28</Name>
</OperationInformation>
</Information>
</HelpResponse>
经过进一步调查,我发现问题出在我尝试使用 node-soap 发出 API 请求时发送的内容。当我尝试调用时,比如说,RegisterHITType
而不是发送一个<RegisterHITType>
元素,它似乎发送了某种<Help>
元素,看起来像这样:
<Help xmlns="http://requester.mturk.amazonaws.com/doc/2014-08-15">
<Title>(something)</Title>
<Description>(something)</Description>
<Reward>(something)</Reward>
<AssignmentDurationInSeconds>(something)</AssignmentDurationInSeconds>
<AWSAccessKeyId>(something)</AWSAccessKeyId>
<Timestamp>(something)</Timestamp>
<Service>AWSMechanicalTurkRequester</Service>
<Signature>(something)</Signature>
</Help>
为什么它发送这个而不是预期的 API 请求?这是故障的结果,还是我误解了如何使用 node-soap?有没有办法解决这个问题,还是我需要考虑通过其他方式使用 Mechanical Turk API?