2016-08-13 7 views
2

Ich habe httpClient verwendet, um Daten an den Server zu senden. Ich kann die Antwort erfolgreich überprüfen, aber meine Antwortzeichenfolge ist in einer PHP-Datei. Ich weiß nicht, wie man auf diese Zeichenkette in PHP mit etwas wie zugreift:C# httpclient Antwort erhalten

Ich versuchte mit WebClient-Klasse. Es funktionierte, aber ich konnte nicht überprüfen, ob die Antwort erfolgreich ist. Hier

ist der Code:

public Boolean authorization(String korisnik, String zaporka) 
{ 
    var client = new HttpClient(); 

    var pairs = new List<KeyValuePair<string, string>> 
    { 
     new KeyValuePair<string, string>("korisnik", korisnik), 
     new KeyValuePair<string, string>("zaporka", zaporka) 
    }; 

    var content = new FormUrlEncodedContent(pairs); 

    var response = client.PostAsync("http://www.etfos.unios.hr/~tsapina/autorizacija.php", content).Result; 
    System.Diagnostics.Debug.WriteLine(response); 
    if (response.IsSuccessStatusCode) 
    { 
      MessageBox.Show("success respond"); 
      return false; 
     } 
    return true; 
} 

Ich brauche in einer PHP-Datei Ausgabe erhalten führen.

Antwort

0

Sie möchten den Content Wert überprüfen, dann ReadAsStringAsync() für den Inhalt. Es ist JSON, also müssen Sie es analysieren.

Hier verwende ich JsonConvert.Serialize<Dictionary<string,string>>() von Json .NET die JSON zu einem Dictionary<string, string> Objekt deserialisieren, die Sie auf die Daten zugreifen können. Ich schlage vor, auch kann async und await mit Verwendung von asynchronen Funktionen richtig zu machen:

public async bool Authorization(string korisnik, string zaporka){ 
    ... 
    try { 
     //will always throw an exception if not successful 
     response.EnsureSuccessStatusCode(); 

     var response = await client.PostAsync("http://www.etfos.unios.hr/~tsapina/autorizacija.php", content); 

     if (httpResponse.Content != null) { 
      var responseContent = await httpResponse.Content.ReadAsStringAsync(); 

      var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseContent); 

      Console.WriteLine(dict["post_var_key"]); 
     } 
    } 
    catch (Exception ex) { 
     Console.WriteLine("Error occured: " + ex.Message); 
    } 
} 
+0

Dank, werde ich versuchen –

+0

@markomarinovic das Update Siehe 'EnsureSuccessStatusCode()'. Dadurch wird sichergestellt, dass eine Ausnahme ausgelöst wird, wenn auch ein Fehler zurückgegeben wird. –

Verwandte Themen