Не удалось отправить json с помощью С# в конечную точку Google Cloud

Я создал конечную точку для объекта и развернута в Google облачном приложении.

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

Если я отправил следующий JSON с помощью Advanced REST Client в хром, элемент успешно добавляется в хранилище данных.

{ 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\""
}

Это так, как ожидалось. Однако проблема, с которой я столкнулся, - это попытка отправить тот же самый json из aС# -программы, что он не добавляется успешно. Ниже приведена программа С#, которая отправляет эту информацию.

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\""
}

Может ли кто-нибудь сказать мне, где я делаю это неправильно?

1 ответ

Вы должны установить тип контента как "application/json", как показано ниже.

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

licensed under cc by-sa 3.0 with attribution.