In meiner C# -App brauche ich 2 verschiedene Teile:
1) Eine Klassenbibliothek, die HttpClient umschließt, nimmt Parameter wie URI und ein JSON-Objekt an POSTED und ruft die POST-Methode auf einer Instanz von Httpclient:Wie verwendet man HttpClient korrekt als Klassenbibliothek?
static async Task CreateCustomer()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://10.211.55.2:8080/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Accept", "application/json");
var customer = new Customer() { Name = "Gizmo", Address = "123 Widget lane" };
var response = await client.PostAsJsonAsync("/api/customer", customer);
var p = response;
}
}
2) Ein Windows-Konsole-Anwendung, die diese Klassenbibliothek importiert, und ruft diese CreateCustomer Methode, die aktuellen Parameterwerte für den URI vorbei und dem Kunden JSON-Objekt:
static async Task EnvokeCreateCustomer()
{
Customer customer = new Customer {Name="",Address="" };
var URI = "http://my_api:8080/Customer";
RestClient.Client restClient = new RestClient.Client();
restClient.CreateCustomer(URI, customer);
}
Dieser Code wird ausgeführt, aber es ist kein Ereignis, das auf meine API trifft, es durchbricht, es passiert hat und nichts tut. Das gleiche Problem mit der GET API.
Gibt es eine bewährte Möglichkeit zum Erstellen solcher Klassenbibliotheken, die von einer Konsolenanwendung aufgerufen werden können?
Ihre Bibliothek 'CreateCustomer()' akzeptiert keine Parameter, wie kommen Sie dann mit Parameter? – Rahul
Sie warten nicht auf die letzte Zeile, ändern Sie sie wie folgt: warten restClient.CreateCustomer (URI, Kunde); Und warten Sie auf den Anruf bei EnvokeCreateCustomer()? –
@PeterBons, nur weil es async ist, schränkt es nicht ein, darauf zu warten. – Rahul