机械土耳其人拒绝POST请求

0 java rest mechanicalturk

我正在尝试使用MTurk Restful API和POST使用HITTypeID创建createHIT,但是,出现以下错误:

<?xml version="1.0"?>
<CreateHITResponse>
  <OperationRequest>
    <RequestId>199c9aff-86a4-4280-8d2f-d956a53515b0</RequestId>
  </OperationRequest>
  <HIT>
    <Request>
      <IsValid>False</IsValid>
      <Errors>
        <Error>
          <Code>AWS.MissingParameters</Code>
          <Message>Your request is missing required parameters. Required parameters include Question. Question is a required parameter. (1376962818123)</Message>
          <Data>
            <Key>Parameter</Key>
            <Value>Question</Value>
          </Data>
          <Data>
            <Key>Description</Key>
           <Value>Question is a required parameter</Value>
          </Data>
          <Data>
            <Key>Description</Key>
            <Value>Question is a required parameter</Value>
          </Data>
          <Data>
            <Key>Parameter</Key>
            <Value>Question</Value>
          </Data>
        </Error>
      </Errors>
    </Request>
  </HIT>
</CreateHITResponse>
Run Code Online (Sandbox Code Playgroud)

据我了解,如果给出了Hittype,则不需要标题。因此,看起来该API实际上并未查看POST主体。

我将如何解决?我的要求有什么问题吗?

请求:

<CreateHITRequest>
  <HITTypeId>HITTYPEID</HITTypeId>
  <MaxAssignments>1</MaxAssignments>
  <LifetimeInSeconds>604800</LifetimeInSeconds>
  <Question>&lt;QuestionForm Structure&gt;</Question>
</CreateHITRequest>
Run Code Online (Sandbox Code Playgroud)

Fre*_*nan 5

您无法通过REST将XML发布到Mechanical Turk。似乎您对REST和SOAP感到困惑。

Mechanical Turk的REST接口仅采用URL编码的键值对,如下所示

https://mechanicalturk.amazonaws.com/?Service=AWSMechanicalTurkRequester
&AWSAccessKeyId=[the Requester's Access Key ID]
&Version=2012-03-25
&Operation=CreateHIT
&Signature=[signature for this request]
&Timestamp=[your system's local time]
&HITTypeId=T100CN9P324W00EXAMPLE
&Question=[URL-encoded question data]
&LifetimeInSeconds=604800
Run Code Online (Sandbox Code Playgroud)