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

Vbscript 如何发送MSXML2.ServerXMLHTTP POST并避免转义\字符?,vbscript,asp-classic,yaml,Vbscript,Asp Classic,Yaml,我使用的API(特别是MadMiMi的Mailer API)要求我执行HTTP post并发送YAML字符串作为发布的变量之一 我执行POST的尝试正在工作,也就是说,POST已经完成,并且在API端被接收。问题是YAML字符串中的\n元素将\转义,因此 ...\n... 它被张贴为 ...\\n... Maming YAML字符串在预期语法方面无效 YAML字符串应如下所示: --- \nvar1:somedatahere\nvar2:someotherdatahere\n 但现在收到的

我使用的API(特别是MadMiMi的Mailer API)要求我执行HTTP post并发送YAML字符串作为发布的变量之一

我执行POST的尝试正在工作,也就是说,POST已经完成,并且在API端被接收。问题是YAML字符串中的
\n
元素将
\
转义,因此

...\n...
它被张贴为

...\\n...
Maming YAML字符串在预期语法方面无效

YAML字符串应如下所示:

--- \nvar1:somedatahere\nvar2:someotherdatahere\n
但现在收到的是:

--- \\nvar1:somedatahere\\nvar2:someotherdatahere\\n
我的问题是如何让POST请求不转义
\
字符

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

httpRequest.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
只是想看看它的存在或不存在是否产生了任何明显的差异,但根本没有真正的变化。(我现在已经删除了这一行,因为我几乎可以肯定这不是用例中需要的东西)

以下是我正在使用的代码的完整post部分:

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

在双引号内传递
数据
似乎可以解决问题

data = """" & data & """"
httpRequest.Send data
(还必须使用
httpRequest.SetRequestHeader“Content-Type”,“application/x-www-form-urlencoded
来测试这一点)

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


您可以在此处使用在线解析器进行检查:

在双引号内传递
数据似乎可以解决问题

data = """" & data & """"
httpRequest.Send data
(还必须使用
httpRequest.SetRequestHeader“Content-Type”,“application/x-www-form-urlencoded
来测试这一点)

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


您可以在此处使用联机解析器进行检查:

是否尝试使用文字换行而不是转义序列
\n
<代码>“&body=--”&vbLf&“var1:&…”
@AnsgarWiechers感谢您整理我的帖子/问题——很抱歉出现格式问题。我尝试了vbLf,也尝试了vbCrLf,但都不起作用。您是否尝试使用文字换行而不是转义序列
\n
<代码>“&body=--”&vbLf&“var1:&…”@AnsgarWiechers感谢您整理我的帖子/问题——很抱歉出现格式问题。我试过vbLf,也试过vbCrLf,但都不起作用。