如何发送MSXML2.ServerXMLHTTP POST并避免\ _字符转义?

时间:2015-06-21 15:11:31

标签: vbscript asp-classic yaml

我正在使用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请求无法转义\字符?

我已尝试使用%5cChr()字符的\代码,并尝试添加/删除:

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

1 个答案:

答案 0 :(得分:0)

data传递给双引号似乎可以解决问题。

data = """" & data & """"
httpRequest.Send data

(还必须使用httpRequest.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded来测试)

来自Wikipedia page for YAML

  

字符串(标量)通常不加引号,但可以包含在内   双引号(“)或单引号(')。在双引号内,   特殊字符可以用C风格的转义序列表示   以反斜杠(\)开头。

您可以在此处使用在线解析器进行检查:http://yaml-online-parser.appspot.com/