Java 土耳其机械公司拒绝POST请求

Java 土耳其机械公司拒绝POST请求,java,rest,mechanicalturk,Java,Rest,Mechanicalturk,我尝试使用MTurk restful API,并使用HITTypeID发布到createHIT,但是,我得到以下错误: <?xml version="1.0"?> <CreateHITResponse> <OperationRequest> <RequestId>199c9aff-86a4-4280-8d2f-d956a53515b0</RequestId> </OperationRequest> <

我尝试使用MTurk restful API,并使用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>

HITTYPEID
1.
604800
问卷结构

您不能通过REST将XML发布到Mechanical Turk。在我看来,你好像把剩下的和肥皂混淆了

Mechanical Turk的REST接口只接受URL编码的键值对:


您不能通过REST将XML发布到Mechanical Turk。在我看来,你好像把剩下的和肥皂混淆了

Mechanical Turk的REST接口只接受URL编码的键值对:


我把POST请求参数弄混了。 对于MTURK REST API,您不发布XML结构,而是将头+值发布到指定的URL

您可以将它们作为参数发布在帖子正文中,而不是URL参数

例如,下面的GET请求:

GEThttps://mechanicalturk.amazonaws.com/?Service=AWSMechanicalTurkRequester
&AWSAccessKeyId=[请求者的访问密钥ID]
&版本=2012-03-25
&操作=创建命中
&签名=[此请求的签名]
&时间戳=[系统的本地时间]
&HITTypeId=T100CN9P324W00示例
&问题=[URL编码的问题数据]
&LifetimeInSeconds=604800

将成为:

POSThttps://mechanicalturk.amazonaws.com/?Service=AWSMechanicalTurkRequester
AWSAccessKeyId=[请求者的访问密钥ID]
&版本=2012-03-25
&操作=创建命中
&签名=[此请求的签名]
&时间戳=[系统的本地时间]
&HITTypeId=T100CN9P324W00示例
&问题=[URL编码的问题数据]
&LifetimeInSeconds=604800

其中URL下面的所有内容都是帖子正文


希望这对某人有所帮助。

我把POST请求参数弄混了。 对于MTURK REST API,您不发布XML结构,而是将头+值发布到指定的URL

您可以将它们作为参数发布在帖子正文中,而不是URL参数

例如,下面的GET请求:

GEThttps://mechanicalturk.amazonaws.com/?Service=AWSMechanicalTurkRequester
&AWSAccessKeyId=[请求者的访问密钥ID]
&版本=2012-03-25
&操作=创建命中
&签名=[此请求的签名]
&时间戳=[系统的本地时间]
&HITTypeId=T100CN9P324W00示例
&问题=[URL编码的问题数据]
&LifetimeInSeconds=604800

将成为:

POSThttps://mechanicalturk.amazonaws.com/?Service=AWSMechanicalTurkRequester
AWSAccessKeyId=[请求者的访问密钥ID]
&版本=2012-03-25
&操作=创建命中
&签名=[此请求的签名]
&时间戳=[系统的本地时间]
&HITTypeId=T100CN9P324W00示例
&问题=[URL编码的问题数据]
&LifetimeInSeconds=604800

其中URL下面的所有内容都是帖子正文


希望这对其他人有所帮助。

文档确实提到在多个位置发布到REST api。然而,它并没有涵盖它的全部细节。正如论坛和AWS聊天支持中提到的。GET请求仅限于@c-qjv0xfi,除非使用SOAP,否则无法发布XML。文件很清楚。您需要对请求进行URL编码或使用SOAP。文档中确实提到在多个位置发布到RESTAPI。然而,它并没有涵盖它的全部细节。正如论坛和AWS聊天支持中提到的。GET请求仅限于@c-qjv0xfi,除非使用SOAP,否则无法发布XML。文件很清楚。您需要对请求进行URL编码或使用SOAP。
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