2013-07-11 70 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;