如何在使用 Cloud Scheduler 发出的 HTTP POST 请求上添加 JSON 正文?它会添加“Content-Type”:“application/json”标头吗?

cbd*_*per 4 json http-post google-cloud-platform google-cloud-scheduler

当您在Cloud Scheduler中创建新的 cron 作业时:

在此输入图像描述

body为了传递参数值,我应该在字段中添加什么:

该字段的规格是什么?我应该写JSON在那里吗?

假设我想传递这个JSON对象:

{
  "foo": "bar"
}
Run Code Online (Sandbox Code Playgroud)

"Content-Type": "application/json"自动添加的吗?

jcc*_*ero 7

您可以在正文字段中提供您认为合适的信息。

至少在 - 的情况下,行为可能与描述该字段时的文档中所示的AppEngineAppTarget相同,它们表明如果作业有正文,则 Cloud Scheduler 设置以下标头:HttpTargetheaders

Content-Type:默认情况下,Content-Type 标头设置为“application/octet-stream”。可以通过在创建作业时将 Content-Type 显式设置为特定媒体类型来覆盖默认值。例如,Content-Type 可以设置为“application/json”。...

AFAIK,无法Content-Type从 Google Cloud Web 控制台提供 或任何其他自定义标头,但gcloud如果需要,您可以使用 CLI。请参阅相关文档。请特别注意该OPTIONAL FLAGS部分以及其中的 、--headers--message-body标志--message-body-from-file。您的命令应该类似于:

gcloud scheduler jobs create http job-name \
  --schedule="0 */3 * * *" \
  --uri="http://your.url.com" \
  --http-method=POST \
  --headers="Content-Type: application/json" \
  --message-body="{\"field1\":\"value1\",\"field2\":\"value2\"}}"
Run Code Online (Sandbox Code Playgroud)

请另请参阅相关的 SO 问题1 2,它们可能会有所帮助。