Laden...

POST Request an REST API bringt immer ein 401 Unauthorized

Erstellt von Grimmbizkit vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.913 Views
G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 4 Jahren
POST Request an REST API bringt immer ein 401 Unauthorized

Abend,

ich möchte gerne Daten (JSON) an eine REST API schicken.
Laut Anleitung soll ich im Header einen ApiKey und eine ApplicationElementId mitschicken.
Aber egal ob mit den Daten oder ohne, ich bekomme immer: "401 Nicht autorisiert"


            var request = (HttpWebRequest)WebRequest.Create(txtHostURL.Text);
            
            var data = Encoding.ASCII.GetBytes(ultimoRest.GetJsonFromObject(dataObj));

            request.Headers.Add("ApiKey", txtApiKey.Text);
            request.Headers.Add("ApplicationElementId", txtAppElementId.Text);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = data.Length;

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

            try
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            }
            catch (System.Net.WebException webEx)
            {
                txtResponse.Text = webEx.ToString();
            }

Evtl hat ja jemand eine Idee wo da der Fehler liegt.
Danke schon mal im Vorraus

Gruß Simon

16.834 Beiträge seit 2008
vor 4 Jahren

Verwende den HttpClient; der wird seit Jahren für genau solche Dinge ausdrücklichst empfohlen.

Wenn Du Dir es besonders einfach machen willst, dann bastel Dir selbst ein API SDK mit Refit.
Und den dran Deine Code-Schichten nicht so zu mischen... [Artikel] Drei-Schichten-Architektur

G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 4 Jahren

Hallo Abt

danke für deine Tip.
Hast du evtl eine gute Anleitung oder Tutorial für den HttpClient?
Leider findet man dazu bei den Suchmaschinen ja nicht gerade wenig 😉

Und was ist "Refit" ?

Gruß Simon

16.834 Beiträge seit 2008
vor 4 Jahren

Und was ist "Refit" ?

Google-Suche nach c# refit
Da siehste auch sauber den Einsatz vom HttpClient (wie auch in der Microsoft Doku).

G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 4 Jahren

Eine Frage hätte ich noch.

Ich muss ja meine Daten an eine Webseite senden, dort habe ich folgende Möglichkeiten

  1. REST
  2. HTTP POST request mit XML Body
  3. SOAP (XML)

wäre da REST auch die beste / zukunftssicherste Lösung?

286 Beiträge seit 2011
vor 4 Jahren

wäre da REST auch die beste / zukunftssicherste Lösung?

Ja (Disclaimer: Meine Meinung, gibt bestimmt welche die das anders sehen)

Allerdings wirfst du hier Äpfel und Birnen zusammen
REST
HTTP POST
SOAP

REST ist ein Paradigma, dass besagt wie du deine Struktur aufbaust, so wie SOAP

POST ist eine der Request-Arten die via HTTP möglich sind (GET, POST, PUT, DELETE - um nur die wichtigsten zu nennen, siehe hierzu auch CRUD).

Die Frage ob REST oder HTTP macht also eigentlich keinen Sinn.

Beste Grüße
emuuu

2+2=5( (für extrem große Werte von 2)

3.003 Beiträge seit 2006
vor 4 Jahren

Eine Frage hätte ich noch.

Ich muss ja meine Daten an eine Webseite senden, dort habe ich folgende Möglichkeiten

  1. REST
  2. HTTP POST request mit XML Body
  3. SOAP (XML)

wäre da REST auch die beste / zukunftssicherste Lösung?

Zukunftssicher ist in dem Bereich relativ. Ich werf mal als Begriff noch gRPC in den Ring.

(Im übrigen gilt, was emuuu gesagt hat.)

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

127 Beiträge seit 2015
vor 4 Jahren

Und grundsätzlich wäre natürlich ein Link zu der entsprechenden API Dokumentation auch hilfreich, da können wir evtl. mehr mit anfangen anstatt mit dem Codefragment das offensichtlich nicht funktioniert.

Grundsätzlich kann es nämlich sein das du den API Key nicht im Header übertragen mußt, oder der Key anders heißen muß, oder der Wert unter Umständen noch speziell formatiert sein muß etc.
Das alles würde evtl. aus der Doku hervorgehen.

Weitere mögliche Fehlerquelle ist natürlich auch das du die Werte scheinbar aus einer Textbox ausliest.
Hier können sich natürlich auch Fehler einschleichen. Leerzeichen am Anfang oder am Ende etc.
Oder du benutzt gar das falsche Textbox Element (weil du sie verkehrt benannt hast etc.)