Anbindung über c# Projekt

Hallo!

Ich bin neu hier und versuche derzeit unsere eigene Software über die API an Sevdesk anzubinden:
Entwicklungsumgebung: MS VS 2019
Import der openAPI Schnittstelle
Abrufen von Kontakten funktioniert… aber beim Anlegen scheitere ich derzeit!
Vorgehen:

using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(„MEIN TOKEN“);
httpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse(„application/json“));
httpClient.DefaultRequestHeaders.ExpectContinue = false;
try
{
Model_Contact modelContact = new Model_Contact();
modelContact.BankAccount = null;
modelContact.BankNumber = null;
modelContact.Birthday = null;
modelContact.Category = new Category();
modelContact.Category.Id = 3;
modelContact.Category.ObjectName = „Category“;
modelContact.Parent = null;
modelContact.Surename = null;
modelContact.TaxNumber = null;
modelContact.TaxOffice = null;
modelContact.TaxSet = null;
modelContact.TaxType = null;
modelContact.Titel = null;
modelContact.VatNumber = null;
modelContact.CustomerNumber = „1005“;
modelContact.Name = „Ich AG“;
//modelContact.ObjectName = „Contact“;

                var jsonString = JsonConvert.SerializeObject(modelContact);
                var body = new StringContent(jsonString, Encoding.UTF8, "application/json");
                httpClient.BaseAddress = new Uri("https://my.sevdesk.de/api/v1/Contact");
                var httpRequest = new HttpRequestMessage(HttpMethod.Post, "https://my.sevdesk.de/api/v1/Contact");
                httpRequest.Content = body;

                HttpResponseMessage response = await httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead);

            }

Als Response bekomme ich:
{StatusCode: 400, ReasonPhrase: ‚Bad Request‘, Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:{ Date: Mon, 13 Jun 2022 09:22:56 GMT Transfer-Encoding: chunked Connection: keep-alive Server: nginx Cache-Control: no-store, must-revalidate, no-cache Pragma: no-cache Vary: Accept Access-Control-Allow-Methods: INVALID, MIGRATORINVALID, GET, POST, PUT, DELETE, OPTIONS Version: 1518879078 Access-Control-Expose-Headers: Version Access-Control-Allow-Origin: * Access-Control-Max-Age: 86400 Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: Authorization, X-Authorization, Origin, Accept, Content-Type, X-Requested-With, X-HTTP-Method-Override Content-Type: application/json Expires: Thu, 19 Nov 1981 08:52:00 GMT}}

lese mit

Mind. 20 Zeichen

Bitte verwende Codeblöcke für den gesamten Code, ist massiv schwierig zu lesen.

Die sevDesk API setzt 3 Header voraus:

Accept: "*/*"
Content-Type: "application/json"
Authorization: "DEIN_API_TOKEN"

Dir fehlt der Accept Header.

Danke erstmal für die rasche Antwort:
Ich habe nun den letzten Header auch hinzu gefügt und erhalte keine anderes (positives) Ergebnis

            httpClient.DefaultRequestHeaders.
                Authorization = new AuthenticationHeaderValue("MEIN TOKEN");

            httpClient.DefaultRequestHeaders.
                Accept.
                Add(MediaTypeWithQualityHeaderValue.Parse("application/json"));

            httpClient.DefaultRequestHeaders.
                ExpectContinue = false;

            httpClient.DefaultRequestHeaders.
                Add("Accept", "*/*");

Response:
{StatusCode: 400, ReasonPhrase: ‚Bad Request‘, Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:{ Date: Mon, 13 Jun 2022 11:45:26 GMT Transfer-Encoding: chunked Connection: keep-alive Server: nginx Cache-Control: no-store, must-revalidate, no-cache Pragma: no-cache Vary: Accept Access-Control-Allow-Methods: INVALID, MIGRATORINVALID, GET, POST, PUT, DELETE, OPTIONS Version: 1518879078 Access-Control-Expose-Headers: Version Access-Control-Allow-Origin: * Access-Control-Max-Age: 86400 Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: Authorization, X-Authorization, Origin, Accept, Content-Type, X-Requested-With, X-HTTP-Method-Override Content-Type: application/json Expires: Thu, 19 Nov 1981 08:52:00 GMT}}

Sende den selben Request mal in CURL ab, und schau was da raus kommt.

Hab für C# ne Fertige Klassenbibliothek geschrieben … Probiere es einfach mal damit :slight_smile: über n Feedback würde ich mich freuen

1 „Gefällt mir“

Vielen Dank! Ich werde es mal ausprobieren und gebe auf jeden Fall Feedback… und Vielleicht gibt’s ja auch die eine oder andere Frage!