2017-09-23 1 views
0

Hier mein C# -Code ist, die die Anforderung an den Server sendet:C# kann nicht immer Antwort Header von GetResponse()

try 
{ 
    string url = "https://example.com/"; 
    string json = "thisisanexample"; 
    byte[] data = Encoding.UTF8.GetBytes(json); 
    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); 
    request.Method = "POST"; 
    request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; 
    request.ContentLength = data.Length; 
    request.KeepAlive = true; 
    request.Accept = "application/json, text/plain, */*"; 
    request.Headers.Add("Accept-Language", "en-US,en;q=0.8"); 
    request.Headers.Add("Accept-Encoding", "gzip, deflate, br"); 
    request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
    ServicePointManager.Expect100Continue = false; 
    Stream dataStream = request.GetRequestStream(); 
    // Write the data to the request stream. 
    dataStream.Write (data, 0, data.Length); 
    // Close the Stream object. 
    dataStream.Close(); 
    // Get the response. 
    WebResponse response = request.GetResponse(); 
    // Display the status. 
    Console.WriteLine (((HttpWebResponse)response).StatusDescription); 
    // Get the stream containing content returned by the server. 
    dataStream = response.GetResponseStream(); 
    // Open the stream using a StreamReader for easy access. 
    StreamReader reader = new StreamReader (dataStream); 
    // Read the content. 
    string responseFromServer = reader.ReadToEnd(); 
    // Display the content. 
    Console.WriteLine (responseFromServer); 
    // Clean up the streams. 
    reader.Close(); 
    dataStream.Close(); 
    response.Close(); 
    return responseFromServer; 
} 
catch (Exception e) 
{ 
    return "ERROR:" + e.Message; 
} 

Das Problem ist nicht immer Antwort-Header ... Ich habe versucht GetResponse.Headers zu verwenden (), aber es hat nicht funktioniert ... Bitte helfen Sie mir (Ich bin müde mit diesem Code 5 Tage sitzen) ...

+0

Sie benötigen für den Zugriff auf 'Headers' Eigentum der Antwort. https://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.headers(v=vs.110).aspx –

Antwort

0

Ihr Code funktioniert für mich. Ich bin in der Lage, die Header in der Antwort mit folgenden Zeile

Console.WriteLine(response.Headers); 

Hier zu drucken, ist die Ausgabe für Header

enter image description here

+0

Yaaaaaaaaaaaaaaaay !!! Vielen Dank, Alter! Es funktionierte. Aber es funktioniert nicht mit der PUT-Methode einer Anfrage. Es funktioniert mit der PUT-Methode, wenn Sie diese Zeichenfolge hinzufügen: ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; –