2013-07-11 74 views
1

我试图通过C#发送HTTP获取请求与内容类型application/json。但我不知道如何创建这个请求。 我的HTTP请求是这样的:发送Http请求与内容类型应用Json C#

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: [email protected] 
Accept: application/json 
X-Amzn-Accept-Type: [email protected] 

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

有人能帮助我,请。 认为所有。

回答

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", 
            "[email protected]"); 
client.DefaultRequestHeaders.Add("X-Amzn-Accept-Type", 
           "[email protected]"); 

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;