0

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>

私の理解では、Hittype が指定されている場合、タイトルは必要ありません。そのため、API は実際には POST 本文を表示していないようです。

これを回避するにはどうすればよいですか?私の要求に何か問題がありますか?

リクエスト:

<CreateHITRequest>
  <HITTypeId>HITTYPEID</HITTypeId>
  <MaxAssignments>1</MaxAssignments>
  <LifetimeInSeconds>604800</LifetimeInSeconds>
  <Question>&lt;QuestionForm Structure&gt;</Question>
</CreateHITRequest>
4

2 に答える 2

5

REST 経由で XML を Mechanical Turk に POST することはできません。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
于 2013-08-20T02:19:45.813 に答える
1

POST リクエストのパラメーターを混同していました。MTURK REST API の場合、XML 構造を POST するのではなく、指定された URL にヘッダーと値を POST します。

URL パラメーターの代わりに、POST 本文のパラメーターとしてそれらを POST します。

たとえば、以下の GET リクエスト:

GET 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

次のようになります。

POST 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

URL の下のすべてが POST 本文です。

これが誰かに役立つことを願っています。

于 2013-09-04T15:39:33.297 に答える