使用Postman对Microsoft SQL Server进行编码和解码

fjnneemd  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(247)

我编写了以下脚本,以便通过Web API使用:

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'

当我使用下列参数执行查询时:

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

我得到下面的字符串

然后我通过postman做同样的事情,努力模拟Web调用,得到完全不同的结果

我不知道它为什么会这样--但我有一个脚本,它以相反的方向解码字符串,这个特定的值不起作用
解码后的程序基本上只运行

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

当我运行脚本时

exec [LWP_WEB_DECODE] @encoded = 0x373236373538372D38373132323938372D53

我在SQL中得到这个

然而,我尝试运行在postman中返回的值,它讨厌它。由于某种原因,它没有像我在SQL中那样对它进行编码,它返回的是字符串,而不是十六进制值

rdrgkggo

rdrgkggo1#

存储过程返回二进制数据。SSMS通过将二进制数据编码为十六进制字符串来显示二进制数据。JSON和XML不能直接包含二进制数据,但通常使用Base64将其编码为字符串,而不是使用十六进制字符串。

相关问题