2017-05-13 3 views
-2

ich ein Problem mit dem HttpResponsemessage Prozess bekam, funktioniert alles bitte das Formular auf, aber während der readin der Antwort-habe ich einen Fehler bekommtFehler: InvalidOperationException HttpResponseMessage Antwort

InvalidOperationException : The character set provided in ContentType is invalid.

using (var handler = new HttpClientHandler()) 
{ 
    if (handler.SupportsAutomaticDecompression) 
    { 
     handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
    } 
    using (var client = new HttpClient(handler) { BaseAddress = new Uri(BaseAddress) }) 
    { 
     Dictionary<string, string> dico = new Dictionary<string, string>(); 
     dico.Add("username", _username); 
     dico.Add("password", _password); 

     HttpResponseMessage response = client.PostAsync("/auth", new FormUrlEncodedContent(dico)).Result; 
     var tokResult = response.Content.ReadAsStringAsync().Result; 
     var tokObj = JsonConvert.DeserializeObject<AuthResult>(tokResult); 
     string token = tokObj.Token; 
     return token; 
    } 
} 

Header-Werte der Antwort:

{StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:{ Connection: keep-alive Server: cloudflare-nginx Transfer-Encoding: chunked CF-RAY: 35e6bfcc8f3c3c77-CDG T411-node: webus1 Set-Cookie: __cfduid=db2de200ea64f72bef261054785e1047c1494690372; expires=Sun, 13-May-18 15:46:12 GMT; path=/; domain=.t411.al; HttpOnly Date: Sat, 13 May 2017 15:46:12 GMT X-Powered-By: PHP/5.5.38-4+deb.sury.org~xenial+1 Content-Type: text/html; charset=windows-1252}}

+1

Haben Sie Ihr Problem untersucht? Was hat dir das gesagt? Was hast du getan, um es anzugehen? –

+1

Ich habe gesucht, aber ich fand keine Übereinstimmung, versuchte ich mit einer anderen Bibliothek, aber ohne Erfolg. –

+0

Normalerweise benutze ich einen Sniffer wie Wireshark oder Fiddler. Verwenden Sie einen IE-Browser und erfassen Sie den HTTP-Header. Vergleichen Sie dann den Header mit Ihrem HttpClient-Header. Dann setzen Sie fehlende Header in Ihrem httpclient – jdweng

Antwort

0

Die Lösung, die ich gefunden ist:

var request = (HttpWebRequest)WebRequest.Create(BaseAddress + "/auth"); 

     var postData = "username=" + _username ; 
     postData += "&password=" + _password; 
     var data = Encoding.ASCII.GetBytes(postData); 


     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 

     using (var stream = request.GetRequestStreamAsync().Result) 
     { 
      stream.Write(data, 0, data.Length); 
     } 

     var response = (HttpWebResponse)request.GetResponseAsync().Result; 

     var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

     var tokObj = JsonConvert.DeserializeObject<AuthResult>(responseString); 

     string token = tokObj.Token; 
     return token; 
Verwandte Themen