Jump to content

PowerShell Invoke-RestMethod Antwort auf POST


Direkt zur Lösung Gelöst von cj_berlin,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi,

 

die API Doku sagt:

Zitat

HTTP-POST
HTTP-POST can be used to write new resources. A POST request must always be addressed to a list resource; in other words, no ID may be defined in the final segment of the URI. The object being written must always be placed individually in the body of the HTTP request message and may also not contain an ID. A list of objects cannot be transmitted. The HTTP response message does not contain the written object. The URI via which the written object can be addressed is found in the HTTP response header. Instead, notifications may be contained in the HTTP body of the response.

 

Der spezifische POST Request hat folgendes als Antwort lt. Doku:

204 "A client has been created successfully."

Header: The link contains a self-reference with the ID of the newly created object.

 

Ich würde bei:

$Uri = "http://ichbineineuri/pfad/zur/api"
$objHeaders = @{
    "Accept" = "application/json"
    "Content-Type" = "application/scim+json;charset=utf-8"
}
$jsonBody = @"
	{
		"name": "Hello Sir, I am Json! :-)"
	}
"@

$rm = Invoke-RestMethod -Uri $Uri `
        -Headers $objHeaders `
        -ContentType "application/scim+json;charset=utf-8" `
        -Method Post `
        -UseBasicParsing `
        -UseDefaultCredentials `
        -Body $jsonBody

 

Jetzt im Erfolgsfall erwarten, dass ich in "$rm" bzw. Header die Uri des neuen Objektes ("http://ichbineineuri/pfad/zur/api/id-des-neuen-objektes") finden würde. Leider ist "$rm" immer leer, das Objekt wird aber korrekt angelegt.

 

Die Frage: Ist die Doku hier evtl. falsch bzw. die API liefert entgegen der Doku einfach nichts zurück oder muss ich mein Script anpassen?

 

Vielen Dank und Gruß

Jan

bearbeitet von testperson
Link zu diesem Kommentar
  • Beste Lösung

Moin,

 

das ist der Unterschied zwischen Invoke-WebRequest und Invoke-RestMethod. Ersteres gibt die Antwort des Webservers 1:1 an Dich weiter, und da müsstest Du diese Sachen sehen. Zweiteres versucht den Output zu parsen, und wenn der Output tatsächlich nur aus Returncode und Header besteht, also keinen Body hat, gibt es nichts zu parsen.

Link zu diesem Kommentar

Hi,

 

danke für den Input.

Ich bin mir jetzt nicht mehr sicher, ob ich an der Stelle testweise schon Invoke-WebRequest versucht hatte. Ich werde es dann jetzt einfach (noch)mal testen. ;)

 

Edit: Gerade getestet und siehe da: It's magic, funktioniert. Danke dir. :)

 

Gruß

Jan

bearbeitet von testperson
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...