2013-05-02 15 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); 

To jest mój kod. Chcę zrobić POST i ustawić typ zawartości na text/html, ale kiedy to zrobię, otrzymam powyższy błąd.C# HttpClient, błąd pobierania Nie można dodać wartości, ponieważ nagłówek "typ zawartości" nie obsługuje wielu wartości

Mogę ustawić typ zawartości, który wydaje się przez content.Headers.ContentType, ale nie wiem jak do sprecyzowania "text/html", jeśli robię to. Czy ktoś może pomóc?

Odpowiedz

7

Nie masz .NET 4.5 gotowy, ale według HttpContentHeaders.ContentType i MediaTypeHeaderValue, powinno to wyglądać mniej więcej tak:

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

'content.Headers.ContentType = new MediaTypeHeaderValue (" text/html ") został przyjęty, być może to wszystko. Jego parametrem jest 'string mediaType'. – NibblyPig

+0

@ SLC, więc powinno to być 'content.Headers.ContentType = new MediaTypeHeaderValue (" text/html ")'? – CodeCaster

+0

Wierzę, że tak, to nie błąd, ale kto wie, czy wysyła odpowiednie nagłówki. Zwykle typ zawartości obejmuje również kodowanie znaków, ale dołączanie generuje błąd, więc na razie go ignoruję ... – 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

proszę dodać wyjaśnienie do odpowiedzi, pokazując, co robi kod i jak rozwiązuje problem. Pomoże to innym w przyszłości –

Powiązane problemy