【问题标题】:How to set the Content-Type to "application/json" for Google.Cloud.Tasks.V2 HttpRequest in c#?如何在 c# 中将 Google.Cloud.Tasks.V2 HttpRequest 的 Content-Type 设置为“application/json”?
【发布时间】:2022-01-23 21:09:46
【问题描述】:

我正在使用包 google.cloud.tasks.v2 将任务排入 Google App Engine 任务队列。文档指出:

如果任务有正文,Cloud Tasks 会设置以下标头:

Content-Type:默认情况下,Content-Type 标头设置为 "application/octet-stream"。默认值可以被覆盖 当 任务被创建。例如,Content-Type 可以设置为 "application/json".

“创建任务时”文本链接here,其中没有详细说明如何更改默认的Content-Type "application/octet-stream"。很多谷歌搜索总是会回到上面的链接。

任务有一个HttpRequest 属性,它有一个Headers 属性,但它是只读的。

到目前为止,这是我的代码:

CloudTasksClient cloudTasksClient = CloudTasksClient.Create();
var task = cloudTasksClient.CreateTask(new CreateTaskRequest
{
    Parent = parent.ToString(),
    Task = new Task
    {
        HttpRequest = new HttpRequest
        {
            HttpMethod = HttpMethod.Post,
            Url = url,
            Body = ByteString.CopyFromUtf8(JsonConvert.SerializeObject(searchToDo)),
        },
        //ScheduleTime = Timestamp.FromDateTime(
        //           DateTime.UtcNow.AddSeconds(inSeconds))
    }
});

如何将Content-TypeHttpRequest 设置为"application/json"

【问题讨论】:

  • 到目前为止你尝试了什么,遇到了什么错误?

标签: c# google-app-engine google-cloud-functions google-cloud-tasks


【解决方案1】:

正如您在问题中提到的,Google.Cloud.Tasks.V2.HttpRequest 有一个只读的Headers 属性,即MapField。虽然该属性是只读的,但MapField 确实有一个Add() 方法,您可以使用它来添加您需要的标题。

创建HttpRequest并在创建Task之前添加标题:

CloudTasksClient cloudTasksClient = CloudTasksClient.Create();
// create HttpRequest
HttpRequest httpReq = new HttpRequest
{
    HttpMethod = Google.Cloud.Tasks.V2.HttpMethod.Post,
    Url = url,
    Body = ByteString.CopyFromUtf8(JsonConvert.SerializeObject(searchToDo)),
};
// add Content-Type to headers
httpReq.Headers.Add("Content-Type", "application/json");

var task = cloudTasksClient.CreateTask(new CreateTaskRequest
{
    Parent = parent.ToString(),
    Task = new Task
    {
        HttpRequest = httpReq,  // assign the HttpRequest
        ...
    }
});

注意:我不使用谷歌云平台,这是未经测试的,纯粹基于网上找到的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2013-04-07
    • 2022-01-01
    • 1970-01-01
    • 2023-04-07
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多