1

我正在尝试通过 C# 发送内容类型为 application/json 的 HTTP Get 请求。但我不知道如何创建这个请求。我的 HTTP 请求是这样的:

POST /messaging/registrations/(REGISTRATION_ID_FOR_DESTINATION_APP_INSTANCE)/messages HTTP/1.1
Host: api.amazon.com
Authorization: Bearer (MY_ACCESS_TOKEN)
Content-Type: application/json
X-Amzn-Type-Version: com.amazon.device.messaging.ADMMessage@1.0
Accept: application/json
X-Amzn-Accept-Type: com.amazon.device.messaging.ADMSendResult@1.0

{
    "data":{"key1":"value1","key2":"value2"},
    "consolidationKey":"Some Key",
    "expiresAfter":86400
}

有人可以帮助我,拜托。为所有人考虑。

4

1 回答 1

1

假设你有一个像这样的类来表示有效负载,

class Payload
{
        public Dictionary<string, string> data { get; set; }
        public string consolidationKey { get; set;}
        public long expiresAfter { get; set; }
}

你可以使用HttpClient,像这样。

string url = "http://api.amazon.com/messaging/registrations/1234/messages";
var client = new HttpClient();

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
                                              "Bearer", "token");
client.DefaultRequestHeaders.Accept.Add(
              new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("X-Amzn-Type-Version",
                                   "com.amazon.device.messaging.ADMMessage@1.0");
client.DefaultRequestHeaders.Add("X-Amzn-Accept-Type",
                                "com.amazon.device.messaging.ADMSendResult@1.0");

var kvp = new Dictionary<string, string>();
kvp.Add("key1", "value1");
kvp.Add("key2", "value2");

var payload = new Payload()
{
    consolidationKey = "Some Key", expiresAfter = 86400, data = kvp
};

var result = client.PostAsJsonAsync<Payload>(url, payload).Result;
于 2013-07-12T04:07:20.370 回答