我正在使用API(特别是MadMiMi的Mailer API),它要求我执行HTTP帖子并将YAML字符串作为发布的变量之一发送。
我尝试执行POST工作 - 也就是说 - POST已完成并在API端收到。问题是YAML字符串中的\n
元素已对\
进行了转义,因此不是
...\n...
它被发布为
...\\n...
根据预期的语法将YAML字符串命名为无效。
YAML字符串应如下所示:
--- \nvar1:somedatahere\nvar2:someotherdatahere\n
但收到的是:
--- \\nvar1:somedatahere\\nvar2:someotherdatahere\\n
我的问题是如何让POST请求无法转义\
字符?
我已尝试使用%5c
和Chr()
字符的\
代码,并尝试添加/删除:
httpRequest.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
只是为了看是否存在或不存在任何明显的差异,但根本没有真正的变化。 (我现在删除了该行,因为我几乎可以肯定这不是我在用例中需要的东西)。
这是我正在使用的代码的完整帖子段:
Dim data, httpRequest, postResponse
data = "username=*************"
data = data & "&api_key=******************"
data = data & "&promotion_name=*******"
data = data & "&cc=emailaddress1@emailaddress1.com"
data = data & "&recipient=emailaddress2@emailaddress2.com"
data = data & "&subject=My Subject Line Here"
data = data & "&from=emailaddress3@emailaddress3.com"
data = data & "&body=--- \nvar1:"& myvariable1 & "\nvar2:"& myvariable2 & "\n"
Set httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP")
httpRequest.Open "POST", "https://api.madmimi.com/mailer", False
httpRequest.Send data
postResponse = httpRequest.ResponseText
答案 0 :(得分:0)
将data
传递给双引号似乎可以解决问题。
data = """" & data & """"
httpRequest.Send data
(还必须使用httpRequest.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded
来测试)
字符串(标量)通常不加引号,但可以包含在内 双引号(“)或单引号(')。在双引号内, 特殊字符可以用C风格的转义序列表示 以反斜杠(\)开头。
您可以在此处使用在线解析器进行检查:http://yaml-online-parser.appspot.com/