【问题标题】:How to POST data to webserver before Mechanical Turk如何在 Mechanical Turk 之前将数据发布到网络服务器
【发布时间】:2014-11-06 03:29:14
【问题描述】:

我目前正在 Mechanical Turk 中针对外部问题执行以下操作:

<form name="mturk" method="post" action="https://workersandbox.mturk.com/mturk/externalSubmit">
    Name: <input type="text" name="name"><br>
    Text: <input type="text" name="text"><br>
    <input type="hidden" name="assignmentId" value="3AZHRG4CU4K686LQ1BGIRZZETDV03F">
    <input type="submit" name="form-submission" value="Elephant">
</form>

如果我提交该表单,它会起作用。

但是,我不想执行上述操作,而是将 POST 发送到我的网络服务器,进行所有验证,然后将 POST 发送到 Mechanical Turk。比如:

import requests
url='https://workersandbox.mturk.com/mturk/externalSubmit'
data={'name': 'david', 'text': 'mark', 'assignmentId': '3AZHRG4CU4K686LQ1BGIRZZETDV03F'}
r=requests.post(url, data=data)
r.text

提交此 HIT 的结果时出现问题。

\n\n\t

此 HIT 仍分配给您。要再次尝试此 HIT,请单击导航栏中的“分配给您的 HIT”,然后单击该 HIT 的“继续处理此 HIT”。如果此问题仍然存在,您可以使用上面的“联系”链接联系此 HIT 的请求者。

\n\n\t

要返回此 HIT 并继续处理其他 HIT,请单击“返回 HIT " 按钮。

\n

为什么当我使用请求执行POST 时会发生这种情况?我该怎么做?

【问题讨论】:

  • 这个问题你解决了吗?由于涉及到 cookie,因此伪造标题似乎不起作用。是否可以通过 javascript 向 2 个域提交 1 个表单?

标签: python amazon-web-services python-requests mechanicalturk


【解决方案1】:

我认为您遇到了同样的问题described here。基本上,MTurk 显然会阻止这些不以浏览器重定向形式出现的请求。如果我正确理解了该线程上的 AWS 响应,那么您对此无能为力。

【讨论】:

  • 再次感谢您提供此链接。因此,在收集数据的情况下,要走的路是通过获取该 HIT (conn.get_assignments(hit_id=hit_id)) 的分配来完成类似 cron 的工作,然后从中填充我的数据库?
  • @David542 是的,或者使用the Notifications API 从您的服务器触发GetAssignment API 调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
相关资源
最近更新 更多