Wie nutze ich das Package WooCommerceNET in VB.Net

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von dubi.

    Wie nutze ich das Package WooCommerceNET in VB.Net

    Hallo,

    Kann mir jemand einen Hinweis geben, wie ich das Package WooCommerceNET in VB.Net verwende? Im Git-Repository(github.com/XiaoFaye/WooCommerc…sage-woocommerce-rest-api) ist ein C# Code gegeben, den ich nicht in VB.Net übertragen kann (wohlgemerkt: ICH...).
    Mein Ziel ist es, alle Orders eines Shops einzulesen.
    Schon die Übersetzung hier gibt mir eine Fehlermeldung in VS: RestAPI nicht defniert...

    Quellcode

    1. Dim rest As RestAPI = New RestAPI("http://www.yourstore.co.nz/wp-json/wc/v3/", "<WooCommerce Key>", "<WooCommerce Secret")
    2. Dim wc As WCObject = New WCObject(rest)


    Habt ihr mir irgendeinen Vorschlag, wie ich da weiterkomme?

    Danke und Grüsse -dubi
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    super - vielen Dank! JSON.Net referenziert und die MyRestAPI von C# zu vb.net übersetzt. Dabei hab ich immer noch Fehlermeldungen:
    - RestAPI: der Typ RestAPI ist nicht definiert
    - DeserializeJSon: Funktion kann nicht als Overrides definiert werden

    Was ist da noch falsch?


    Hier die Klasse:

    VB.NET-Quellcode

    1. Public Class MyRestAPI
    2. Inherits RestAPI
    3. Public Sub New(ByVal url As String, ByVal key As String, ByVal secret As String, ByVal Optional authorizedHeader As Boolean = True, ByVal Optional jsonSerializeFilter As Func(Of String, String) = Nothing, ByVal Optional jsonDeserializeFilter As Func(Of String, String) = Nothing, ByVal Optional requestFilter As Action(Of HttpWebRequest) = Nothing)
    4. MyBase.New(url, key, secret, authorizedHeader, jsonSerializeFilter, jsonDeserializeFilter, requestFilter)
    5. End Sub
    6. Public Overrides Function DeserializeJSon(Of T)(ByVal jsonString As String) As T
    7. Return JsonConvert.DeserializeObject(Of T)(jsonString)
    8. End Function
    9. Public Overrides Function SerializeJSon(Of T)(ByVal t As T) As String
    10. Return JsonConvert.SerializeObject(t)
    11. End Function
    12. End Class


    in den Imports habe ich stehen:

    VB.NET-Quellcode

    1. Imports WooCommerceNET.WooCommerce.v3
    2. Imports WooCommerceNET.WooCommerce.v3.Extension
    3. Imports Json.Net


    CodeTags korrigiert ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Update: ich habe nun meine Imports und Referenzen ergänzt:

    VB.NET-Quellcode

    1. Imports WooCommerceNET.WooCommerce.v3
    2. Imports WooCommerceNET.WooCommerce.v3.Extension
    3. Imports Json.Net
    4. Imports Newtonsoft.Json
    5. Imports WooCommerceNET
    6. Imports System.Net


    weiter musste ich die übersetzte Klasse etwas anpassen, da dort case-sensitive Variablen eingesetzt werden (t und T). Habe dort t mit te angepasst:

    VB.NET-Quellcode

    1. Public Class MyRestAPI
    2. Inherits RestAPI
    3. Public Sub New(ByVal url As String, ByVal key As String, ByVal secret As String, ByVal Optional authorizedHeader As Boolean = True, ByVal Optional jsonSerializeFilter As Func(Of String, String) = Nothing, ByVal Optional jsonDeserializeFilter As Func(Of String, String) = Nothing, ByVal Optional requestFilter As Action(Of HttpWebRequest) = Nothing)
    4. MyBase.New(url, key, secret, authorizedHeader, jsonSerializeFilter, jsonDeserializeFilter, requestFilter)
    5. End Sub
    6. Public Overrides Function DeserializeJSon(Of T)(ByVal jsonString As String) As T
    7. Return JsonConvert.DeserializeObject(Of T)(jsonString)
    8. End Function
    9. Public Overrides Function SerializeJSon(Of T)(ByVal te As T) As String
    10. Return JsonConvert.SerializeObject(te)
    11. End Function
    12. End Class

    Soweit so gut. Nun versuche ich, die Bestellungen einzulesen wie folgt:

    VB.NET-Quellcode

    1. Private Async Function getOrdersFromWCAsync() As Task
    2. ' verwende woocommerce API, um alle Orders zu lesen
    3. Dim rest As RestAPI = New MyRestAPI("http://mywebsite.de/wp-json/wc/v3/", "<someKey>", "<someOtherKey")
    4. Dim wc As WCObject = New WCObject(rest)
    5. ' get all orders
    6. Dim orders = Await wc.Order.GetAll()
    7. Debug.Print("done")
    8. End Function

    Ich möchte ein Formular mit den neuesten Orders anzeigen. Also rufe ich die Funktion getOrdersFromWCAsync() beim Laden des Formulars auf.

    Hier habe ich 2 Fragen:
    1. Ich musste die Funktion getOrdersFromWCAsync als async deklarieren (weil sonst die wohl zwingende Await-Anweisung nicht akzeptiert würde). Wie kann ich also warten, bis die Daten gelesen wurden (damit ich sie anschliessend verarbeiten kann).
    2. Wie kann ich die Daten lesen, wenn die Funktion keinen Rückgabewert hat (da async).
    Muss ich die Daten noch irgendwie konvertieren (da JSON)?

    Bitte entschuldigt die vermutlich blöden Fragen: wer vermutet, dass ich in dem Bereich vorher noch nie programmiert habe, hat recht :thumbsup: .

    -dubi

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „dubi“ ()

    dubi schrieb:

    Wie kann ich also warten, bis die Daten gelesen wurden (damit ich sie anschliessend verarbeiten kann).
    Mit Await

    dubi schrieb:

    Wie kann ich die Daten lesen, wenn die Funktion keinen Rückgabewert hat (da async).
    auch eine Async-Function kann einen Rückgabewert haben.
    Das ist ja, was den Async/Await-Pattern so komfortabel macht.

    Ich hab mal Tut dazu gemacht. Da gibts auch einen kleinen Abschnitt, wo das näher erklärt wird: codeproject.com/Articles/10296…ithout-any-additional-Lin
    Hier im Forum hat @ErfinderDesRades auch eines in Deutsch.

    Async, Await und Task

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##