2013-05-02 11 views
8
HttpClient serviceClient = new HttpClient(); 
serviceClient.DefaultRequestHeaders.Add("accept", "Application/JSON"); 

HttpContent content = new StringContent(text); 
content.Headers.Add("content-type", "text/html"); 

var response = await serviceClient.PostAsync(new Uri(_serviceUrl), content); 

Bu benim kodum. Bir POST yapmak ve içerik türünü text/html olarak ayarlamak istiyorum, ancak bunu yaptığımda yukarıdaki hatayı alıyorum.C# HttpClient, hata alma 'İçerik türü' başlığı üstbilgi birden çok değeri desteklemediğinden değer eklenemiyor

Göründüğü içerik türünü aracılığıyla ayarlayabilirim ancak bunu yaparsam "text/html" ifadesini nasıl belirteceğimi bilmiyorum. Biri yardım edebilir mi?

cevap

7

hazır .NET 4.5 yokmu ama HttpContentHeaders.ContentType ve MediaTypeHeaderValue göre, bu gibi görünmelidir:

content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); 
+4

'content.Headers.ContentType = new MediaTypeHeaderValue (" text/html ") kabul edildi, belki de bu. Onun parametresi "string mediaType". – NibblyPig

+0

@SLC, bu yüzden content.weaders.ContentType = yeni MediaTypeHeaderValue ("text/html") 'olmalıdır? – CodeCaster

+0

İnanıyorum ki, hata yapmıyor, ama doğru başlık gönderiyorsa kim bilir. Genellikle içerik türü, kodlama karakterini de içerir, ancak bir hata oluşturan ekleme, bu yüzden şimdilik görmezden geliyorum ... – NibblyPig

0
var settings = new JsonSerializerSettings() 
     { 
      DateFormatHandling = 
       DateFormatHandling.MicrosoftDateFormat 
     }; 
     var serializedString = JsonConvert.SerializeObject(data, settings); 

     var conent = new StringContent(serializedString); 
     conent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
     var response = await this.httpClient.PostAsync(requestUri, conent).ConfigureAwait(false); 

     T requestResult = default(T); 
     if (response.IsSuccessStatusCode) 
     { 
      response.EnsureSuccessStatusCode(); 
      requestResult = await response.Content.ReadAsAsync<T>(); 
     } 
+1

Lütfen cevabınıza, kodun ne yaptığını ve sorunu nasıl çözdüğünü gösteren bir açıklama ekleyin. Bu gelecekte başkalarına yardımcı olacak –

İlgili konular