[FIXED] Kodierung und Dekodierung mit Microsoft SQL Server mit Postman

Ausgabe

Ich habe das folgende Skript geschrieben, das über die Web-API verwendet werden soll:

CREATE PROCEDURE [dbo].[LWP_WEB_ENCODE]
    @order_no int, 
    @dept varchar(2)
    
    DECLARE @customer_no int 
    SET @customer_no = (SELECT customer_no FROM table_order 
                        WHERE order_no = @order_no)
        
    DECLARE @string varchar (4000), @encoded VARBINARY(max)

    SELECT @string = CAST(@order_no AS varchar) + '-' + 
                     CAST(@customer_no AS varchar) + '-' + @dept_abbreviation
            
    SELECT @encoded = CONVERT(VARBINARY(MAX), @string)
    SELECT @encoded AS 'encoded'

Wenn ich die Abfrage mit den folgenden Parametern ausführe:

exec [LWP_WEB_LWP_WEB_ENCODE] @order_no = 7267587, @dept_abbreviation = 'S'

Ich bekomme den folgenden String zurück

Geben Sie hier die Bildbeschreibung ein

Ich mache dann dasselbe über den Postboten, um die Webanrufe zu simulieren und etwas völlig anderes zu erhalten

Geben Sie hier die Bildbeschreibung ein

Ich bin mir nicht sicher, warum es sich so verhält – aber ich habe auch ein Skript, das die Zeichenfolge in die entgegengesetzte Richtung decodiert, und dieser bestimmte Wert funktioniert nicht

Das decodierte Verfahren führt im Grunde nur dies aus

SELECT CONVERT(VARCHAR(MAX), @encoded) AS 'decoded'

Wenn ich mein Skript ausführe

exec [LWP_WEB_DECODE] @encoded = 0x373236373538372D38373132323938372D53

Ich bekomme das in SQL

Geben Sie hier die Bildbeschreibung ein

Dann versuche ich jedoch, den in Postman zurückgegebenen Wert auszuführen, den es hasst. Aus irgendeinem Grund wird er nicht wie in SQL codiert und es wird eine Zeichenfolge und kein Hexadezimalwert zurückgegeben

Geben Sie hier die Bildbeschreibung ein

Lösung

Die gespeicherte Prozedur gibt binäre Daten zurück. SSMS zeigt Binärdaten an, indem es sie in einer Hex-Zeichenfolge codiert. JSON und XML können Binärdaten nicht direkt enthalten, verwenden aber meistens Base64 , um sie als Zeichenfolge zu codieren, anstatt eine Hex-Zeichenfolge zu verwenden.


Beantwortet von –
David Browne – Microsoft


Antwort geprüft von –
Senaida (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like