我正在尝试使用Google Cloud Tasks,通过“ Try this API”网络功能或Ruby Google Cloud SDK创建任务。
我无法将有效载荷交付给工人。
实际上,以POST方式发送Http方法是可行的,但是在Cloud Tasks UI中显示为GET。
没有有效负载或标头发送到工作程序或不会显示在Cloud Task UI中。我已经尝试过Base64,JSON,普通字符串。(参见下图)
例:
请求:
{
"task": {
"httpRequest": {
"httpMethod": "POST",
"body": "SGVsbG8=",
"url": "https://some-random-url"
}
}
}
响应:
{
"name": "projects/<my-project>/locations/europe-west1/queues/default/tasks/73572672049866200001",
"scheduleTime": "2019-07-03T14:49:34.450453Z",
"createTime": "2019-07-03T14:49:34Z",
"view": "BASIC",
"httpRequest": {
"url": "https://some-random-url/",
"httpMethod": "POST",
"headers": {
"User-Agent": "Google-Cloud-Tasks"
}
},
"dispatchDeadline": "600s"
}
示例Ruby代码:
task = {
http_request: {
url: <project/location/queue/url>,
http_method: 'POST',
body: "Something"
}
}
response = @client.create_task(@parent, task)
Google Cloud UI的屏幕截图:
是否有某种特殊格式来设置要通过POST传递的有效负载?
谢谢!
感谢您的发布,这是现有Cloud Tasks UI中的错误,我们正在修复此错误。
同时,可以通过运行以下命令来确定任务的正确HTTP方法:
gcloud beta任务描述
https://cloud.google.com/sdk/gcloud/reference/beta/tasks/describe
上面的命令将显示该任务的正确HTTP方法。
答案来自:当使用HttpRequest作为payload_type时,Google Cloud Tasks始终将HttpMethod设置为GET。
您也可以使用get task方法获取更多信息。
谢谢。看到这一点后,我实际上发现我对有效负载部分是错误的。实际上,无论Google Tasks UI中显示什么内容,它都可以交付,因此它只是一个视觉错误。
@JoseGoncalves使用
gcloud beta tasks describe
时看到了身体吗?我试图用它来检查任务,方法是POST,但是也没有body
字段。从我的目标我也找不到尸体。我正在使用@google-cloud/tasks 1.2.0
npm模块。不知道您是否也可以看到身体。您还可以将客户端库的方法GetTaskRequest与响应视图“ FULL”一起使用以查看正文。确保您具有访问信息的正确权限。