smogkiel
Goto Top

Mit Visual Basic auf Shopware 5 API zugreifen

Hallo!

ich schreibe gerade mit Visual Basic an einer API für einen Online-Shop von Shopware 5.

Ich kann Bestellungen erfolgreich abrufen, nun möchte ich gerne den trackingCodeper per "PUT" aktualisieren.
Wenn ich den Code wie unten angegeben ausführe bekomme ich nur als Antwort "{"success":true,"data":{"id":4346,"location":"https:\/\/www.DOMÄNE.de\/api\/orders\/4346"}}".
Leider werden die Daten nicht aktualisiert. Was mache ich hier falsch?

        Dim objHTTP = CreateObject("MSXML2.ServerXMLHTTP")  

        Try
            objHTTP.Open("PUT", URL & "orders/4346", False, Benutzer, Token)          'Zugangsdaten sind in einer globalen Variabel  
            objHTTP.send("{""id"":4346,""trackingCode"":""000000000000""}")  
            Dim test As String = objHTTP.ResponseText

        Catch ex As Exception
            LOG("Fehler: " & ex.Message)  

        End Try

Content-Key: 317598

Url: https://administrator.de/contentid/317598

Printed on: April 20, 2024 at 01:04 o'clock

Mitglied: 131026
131026 Oct 12, 2016 updated at 14:22:10 (UTC)
Goto Top
Ich kenne die Shop API jetzt nicht, aber warum nutzt du keinen WebRequest für sowas sondern ein unmanaged COM-Object in VB.Net??

R.
Member: atze187
atze187 Oct 13, 2016 at 06:46:59 (UTC)
Goto Top
Wieso VB.NET?
Mitglied: 131026
131026 Oct 13, 2016 updated at 06:50:39 (UTC)
Goto Top
Zitat von @atze187:
Wieso VB.NET?
Kennst du ein Try ... Catch in VBA??! Ich nicht.

Kategorie: VisualStudio?!
Member: atze187
atze187 Oct 13, 2016 at 06:52:39 (UTC)
Goto Top
Sorry, die Recherche gibt dir recht. Klarer Fall von false memories.
Member: atze187
atze187 Oct 13, 2016 at 06:54:35 (UTC)
Goto Top
Nachdem mein Irrtum schonungslos aufgedeckt wurde hat der Ranger natürlich recht.
Member: SmogKiel
SmogKiel Oct 13, 2016 at 09:39:28 (UTC)
Goto Top
OK, da ich kein gelernter Programmierer bin, sonder eher mein Wissen aus Projekten erlerne, würde ich gerne den Unterschied wissen.
Eigentlich dachte ich, dass ich mit WebRequest arbeite, denn ich sende etwas hin und bekomme die Antwort (objHTTP.ResponseText )...oder verstehe ich das falsch?

Geht es denn einfacher?
Member: SmogKiel
SmogKiel Oct 13, 2016 at 09:42:22 (UTC)
Goto Top
Zitat von @atze187:

Wieso VB.NET?

Ich kenne die Sprache Visual Basic am besten. Java usw müsste ich mir erst beibringen...
Mitglied: 131026
131026 Oct 13, 2016 updated at 09:59:33 (UTC)
Goto Top
Zitat von @SmogKiel:
OK, da ich kein gelernter Programmierer bin, sonder eher mein Wissen aus Projekten erlerne, würde ich gerne den Unterschied wissen.
.NET Managed Code = Objekt-Management und Speicherverwaltung wird vom NET-Framework übernommen.
Unmanaged Code is anfälliger und Bedarf expliziter Speicherfreigaben.
Deswegen sollte man wann immer möglich auch die NET-Objekte verwenden wenn diese die gewünschte Funktionaität bereitstellen.
Das was du da machst macht man in VBA, weils da keine andere Möglichkeit in dieser Hinsicht gibt.
Eigentlich dachte ich, dass ich mit WebRequest arbeite
Nicht mit dem .NET Objekt des WebRequests (siehe Link oben) sondern mit einem COM-Objekt das ähnliche Funktionen bereitstellt
, denn ich sende etwas hin und bekomme die Antwort (objHTTP.ResponseText )...oder verstehe ich das falsch?
So einfach ist das nicht.
Geht es denn einfacher?
Siehe Link von mir oben!

Du solltest dich eher mit der API des Shops detaillierter auseinandersetzen, dort wird stehen wie bestimmte Requests auszusehen haben. Ein Shop-System wird IMHO nie ohne vorherige Authentifizierung Änderungen am System per PUT akzeptieren!
Member: clubmaster
clubmaster Oct 16, 2016 at 14:37:15 (UTC)
Goto Top
Auszug aus RFC 1945: D.1.1 PUT

The PUT method requests that the enclosed entity be stored under the
supplied Request-URI. If the Request-URI refers to an already
existing resource, the enclosed entity should be considered as a
modified version of the one residing on the origin server. If the
Request-URI does not point to an existing resource, and that URI is
capable of being defined as a new resource by the requesting user
agent, the origin server can create the resource with that URI.

The fundamental difference between the POST and PUT requests is
reflected in the different meaning of the Request-URI. The URI in a
POST request identifies the resource that will handle the enclosed
entity as data to be processed. That resource may be a data-accepting
process, a gateway to some other protocol, or a separate entity that
accepts annotations. In contrast, the URI in a PUT request identifies
the entity enclosed with the request -- the user agent knows what URI
is intended and the server should not apply the request to some other
resource.

Teste mal POST