【问题标题】:Unable to post json using c# to google cloud endpoint无法使用 c# 将 json 发布到谷歌云端点
【发布时间】:2015-04-16 15:38:01
【问题描述】:

我已经为实体创建了一个端点并部署到谷歌云应用引擎。

https://alert-streamer-857.appspot.com/_ah/api/error/v1/error

如果我在 chrome 中使用 Advanced REST Client 发布以下 JSON,则该项目已成功添加到数据存储区。

{
    ipAddress: "123.456.789.098",
    host: "jbuddha-lap",
    user: "buddha",
    message: "testing from c#"
}

我收到以下回复

{
 "id": "5642554087309312",
 "syncTime": "2015-02-16T06:52:10.347Z",
 "user": "buddha",
 "host": "jbuddha-lap",
 "ipAddress": "123.456.789.098",
 "message": "testing from c#",
 "kind": "error#resourcesItem",
 "etag": "\"7D_54po0JQelJxcYULKayrO-_rE/GG6ep9m3yZRlAja6F1zqro8PO20\""
}

这符合预期。但是我面临的问题是我试图从 c# 程序发送完全相同的 json,它没有被成功添加。以下是发送此信息的 c# 程序。

string json = "{ ipAddress: \"123.456.789.098\",host: \"jbuddha-lap\",user: \"buddha\",message: \"testing from c#\"}";
string result = "";
using (var client = new WebClient())
{
    result = client.UploadString("https://alert-streamer-857.appspot.com/_ah/api/error/v1/error", "POST", json);
}
Console.WriteLine(result);

以下是 JSON 响应。 id 和 syncTime 的值是自动生成的,这就是它们出现在两个响应中的原因。但是您可能已经看到插入没有正确进行。

{
 "id": "5086441721823232",
 "syncTime": "2015-02-16T06:57:28.249Z",
 "kind": "error#resourcesItem",
 "etag": "\"7D_54po0JQelJxcYULKayrO-_rE/Npk3iyaHaGMHYmOeFtt5sPUK1yU\""
}

谁能告诉我哪里做错了?

【问题讨论】:

  • 您是否尝试将 Web 客户端的 Content-Type 设置为“application/json”?
  • 不。我该怎么做?
  • 使用client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
  • 谢谢。它工作得很好......我希望我可以投票,请将其作为答案发布,以便它帮助可能面临同样问题的其他人并且我可以投票。 :)

标签: c# json rest google-app-engine google-cloud-endpoints


【解决方案1】:

您必须将内容类型设置为“application/json”,如下所示。

client.Headers.Add(HttpRequestHeader.ContentType, "application/json");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2015-10-27
    • 2014-07-05
    相关资源
    最近更新 更多