通过HTTP请求POST发送发布数据

时间:2012-09-10 20:29:10

标签: post asp-classic

我正在尝试将数据从Textarea发布到经典ASP脚本,该脚本更新本地计算机上的MS SQL,然后发布到另一台服务器上的PHP脚本。但是,执行以下操作无效,因为它会切断textarea的数据。它在HTML和其他数据中都有特殊字符。

所以我的问题是,如何使用ASP Classic通过POST传递此数据?

我一整天都在寻找,所以希望有人能够启发我,谢谢!

    strUrl = "http://www.example.com/index.php"
    requestData = request("request")
    requestData2 = request("request2")

    strData = "request=" & requestData & "&request2=" & requestData2

    postHTML (strUrl, strData)

function postHTML (strUrl, strData)
    Set xmlHttp = Server.Createobject("MSXML2.ServerXMLHTTP")
    xmlHttp.Open "POST", strUrl, False
    xmlHttp.setRequestHeader "User-Agent", "asp httprequest"
    xmlHttp.setRequestHeader "content-type", "application/x-www-form-urlencoded"
    xmlHttp.Send strData
    postHTML = xmlHttp.responseText
    xmlHttp.abort()
    set xmlHttp = Nothing   
end function

例如,如果&位于requestdata2中,那么&之后的任何内容都会被截断,因为它认为它正在启动一个新字符串。但我希望能够传递这一点。

我现在可以想到的解决方案:对=&这样的特殊字符执行字符串替换,并在php服务器上使用另一个字符串替换来恢复它们。然而,这不是我想完成这项任务的。我想发送帖子的正确方法。

1 个答案:

答案 0 :(得分:2)

您需要对参数值进行URL编码,因此请更改此行...

strData = "request=" & requestData & "&request2=" & requestData2 

...到...

strData = "request=" & Server.UrlEncode(requestData) & "&request2=" & Server.UrlEncode(requestData2)

接收服务器应自动解码值。