2013-01-22 33 views
2

我正在使用HttpClient進行簡單調用。問題是,它似乎沒有發送我提供的內容。服務器讓我對這個錯誤,當我在看與小提琴手的請求時,它不顯示內容,因爲它應該:什麼可以是錯誤的HttpClient在POST期間不傳遞內容

HttpContent content = new FormUrlEncodedContent(
       new List<KeyValuePair<string, string>> { 
        new KeyValuePair<string, string>("key1", "value1"), 
        new KeyValuePair<string,string>("key2","value2"), 
        new KeyValuePair<string,string>("key3","value3"), 
        new KeyValuePair<string,string>("key4", "value4"), 
        new KeyValuePair<string, string>("key5", "value5"), 
        new KeyValuePair<string, string>("key6", "value6") 
       }); 
content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); 
content.Headers.ContentType.CharSet = "UTF-8"; 
HttpResponseMessage resposne = await client.PostAsync(new Uri("my_url"), content); 

有什麼建議?

+3

服務器給出了什麼錯誤?請求是什麼樣的? – kasperhj

+1

你的代碼看起來不錯。當你說內容看起來不像應該那樣,你可以解釋它應該是什麼樣子,它與預期輸出有什麼不同? –

+0

不好意思的回答/個人問題......但會改變爲以下幫助嗎? 'content.Headers.ContentType =「application/x-www-form-urlencoded」;' – Jammerz858

回答

0

UserAgent可能是問題所在。 HttpClient on MSDN

缺省情況下,沒有用戶代理報頭與由HttpClient的對象的HTTP請求到 web服務發送。某些HTTP服務器(包括 某些Microsoft Web服務器)要求客戶端發送的HTTP請求中包含的用戶代理標頭爲 。 HTTP服務器使用用戶代理 頭來確定如何格式化某些HTTP頁面,以便在不同網頁瀏覽器 和窗體因素(例如移動電話)上的客戶端上呈現更好的效果。如果客戶端 請求中沒有用戶代理報頭,則某些HTTP服務器 會返回錯誤。我們需要添加一個用戶代理頭,以避免使用Windows.Web.Http.Headers命名空間中的類的錯誤 。我們將這個 頭添加到HttpClient.DefaultRequestHeaders屬性。