POST: Wie Body des Requests aufbauen ?

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Pe..CH.

    POST: Wie Body des Requests aufbauen ?

    Hallo

    Ich versuche mich an einem Thema, das mir komplett neu ist, aber nicht so schwierig aussah. Ich habe vorab im Netz einige Tutorials und Code-Samples gefunden.

    Ich möchte aus einer Cloud ein PDF herunterladen und habe entsprechenden Beispielcode. Der Body muss zwingend so aufgebaut werden:

    XML-Quellcode

    1. {
    2. "customerNo": "12345",
    3. "pass": "secret",
    4. "cloudId": "xxxxxxxx",
    5. "returnAsFile": true,
    6. "wawiManufacturer": "",
    7. "appBehaviour": {
    8. "DEALER_ALWAYS_SAVE_DHP_XML_PDF_EXPORT_BIT": 4,
    9. "XML_EXPORT_XML_FORMAT": "UTF8",
    10. }
    11. }


    Es gibt weitere Parameter wie DONOT_CREATE_NEW_CLOUDID, die ich ebenfalls nutzen möchte.

    Daraus habe ich mir Klassen gebastelt, mithilfe der JSON Seite:

    VB.NET-Quellcode

    1. Public Class AppBehaviour
    2. Public Property DEALER_ALWAYS_SAVE_DHP_XML_PDF_EXPORT_BIT As Integer
    3. Public Property XML_EXPORT_XML_FORMAT As String
    4. Public Property DONOT_CREATE_NEW_CLOUDID As Integer
    5. End Class
    6. Public Class Root
    7. Public Property customerNo As String
    8. Public Property pass As String
    9. Public Property cloudId As String
    10. Public Property returnAsFile As Boolean
    11. Public Property wawiManufacturer As String
    12. Public Property appBehaviour As AppBehaviour
    13. End Class


    Mein Code:

    VB.NET-Quellcode

    1. Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim c As New Root
    3. c.customerNo = "xxxx"
    4. c.pass = "xxxx"
    5. c.cloudId = "xxxx"
    6. c.returnAsFile = True
    7. c.wawiManufacturer = ""
    8. Dim a As New AppBehaviour
    9. a.DEALER_ALWAYS_SAVE_DHP_XML_PDF_EXPORT_BIT = 4
    10. a.XML_EXPORT_XML_FORMAT = "UTF8"
    11. a.DONOT_CREATE_NEW_CLOUDID = 1
    12. Dim RestURL As String = "https://hilfewaere.net"
    13. Dim client As New Net.Http.HttpClient
    14. Dim JsonData As String = JsonConvert.SerializeObject(c)
    15. Dim RestContent As New Net.Http.StringContent(JsonData, Encoding.UTF8, "application/json")
    16. Dim RestResponse As Net.Http.HttpResponseMessage = Await client.PostAsync(RestURL, RestContent)
    17. ResultMessage.Text = RestResponse.StatusCode.ToString
    18. End Sub


    Das Ergebnis: Unprocessable Entity

    Ich werde mich natürlich weiter in das Thema einlesen und Lösungen suchen, aber vielleicht sieht jemand direkt das Problem und kann mir weiterhelfen.

    Vielen Dank
    Auch ohne diesen optionalen Parameter ist das Ergebnis identisch.


    EDIT: Mein String sieht so aus:

    {""customerNo"":""xxx"",""pass"":""xxx"",""cloudId"":""xxx"",""returnAsFile"":true,""wawiManufacturer"":"""",""appBehaviour"":null}"

    Hab die Zuweisung daraufhin geändert, bekomme aber einen Pogrammfehler (System.NullReferenceException: "Object reference not set to an instance of an object.")

    VB.NET-Quellcode

    1. Dim c As New Root
    2. c.customerNo = "xxx"
    3. c.pass = "xxx"
    4. c.cloudId = "xxx"
    5. c.returnAsFile = True
    6. c.wawiManufacturer = ""
    7. c.appBehaviour.DEALER_ALWAYS_SAVE_DHP_XML_PDF_EXPORT_BIT = 4
    8. c.appBehaviour.XML_EXPORT_XML_FORMAT = "UTF8"



    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Pe..CH“ ()

    Quellcode

    1. Dim a As New AppBehaviour
    2. a.DEALER_ALWAYS_SAVE_DHP_XML_PDF_EXPORT_BIT = 4
    3. a.XML_EXPORT_XML_FORMAT = "UTF8"
    4. a.DONOT_CREATE_NEW_CLOUDID = 1

    und dann

    Quellcode

    1. c.appBehaviour = a
    Danke, das deckt sich mit meinen Korrekturen, die aber immer leider noch das gleiche Ergebnis bringen. Der JSON String ist aber nun identisch zum erforderlichen Body gemäss Beschreibung. Gibt es keine Möglichkeit, mher Details zum Fehlschalg zu ermitteln ?

    EDIT: ich bekomme jetzt ein OK zurück, es gab eine Ungenauigkeit in der Doku des Anbieters hinsichtlich der zu sendenen Daten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pe..CH“ ()