【问题标题】:How to send Json object (or string data) from xmlhttprequest using Classic ASP?如何使用经典 ASP 从 xmlhttprequest 发送 Json 对象(或字符串数​​据)?
【发布时间】:2013-04-01 10:15:44
【问题描述】:

我编写了一个 ASP 脚本来生成 JSON 数据/字符串。如何将该数据发送到 Web 服务?我得到了以下信息,但我无权访问服务器来注册任何 dll 文件。我做了一些搜索,发现我应该使用 XMLHttpRequest 但不知道该怎么做。

请帮忙。谢谢。

连接到网络服务 Web 服务通过 HTTP 协议工作。建议此 Web 服务在投入生产后使用安全套接字层 (HTTPS)。 Web 服务旨在使用以下 URL:http://thedomain.com/api/push

网站在标头中使用身份验证令牌来防止爬虫干扰 Web 服务。发送数据时,添加一个名为 HTTP_TOKENKEY 的标头,其值为 ABCDEFGHIJKL。这是推荐使用 HTTPS 的原因之一。 Web 服务将在请求的 POST 中查找 JSON 数据并将 JSON 响应发送回客户端。

这是我目前所拥有的


strJSONToSend = theevent 

webserviceurl = "http://thedomain.com/api/push"

Set objRequest = Server.createobject("MSXML2.XMLHTTP.3.0") 
objRequest.open "POST", webserviceurl, False 

objRequest.setRequestHeader "Content-Type", "application/json; charset=UTF-8" 
objRequest.setRequestHeader "HTTP_TOKENKEY","ABCDEFGHIJKLMNOPQ" 
objRequest.setRequestHeader "SOAPAction", webserviceurl

results = objRequest.send (strJSONToSend)
write (results)

set objJSONDoc = nothing 
set objResult = nothing

这会冻结,什么都不做

【问题讨论】:

  • 这个帖子有什么线索吗? stackoverflow.com/questions/15440378/…
  • 我没有可用的:(
  • 您应该使用 MSXML2.ServerXMLHTTP 而不是 xmlhttp,因为 xmlhttp 使用服务器端不支持的 WinInet
  • 你看过Fiddler中的http请求吗?有时您可以捕获有关请求的信息。
  • @nkman 您是否找到了解决方案,如果可以,您可以将其发布为答案,这样这不会显示为未回答的问题吗?见Can I answer my own question?

标签: json asp-classic xmlhttprequest


【解决方案1】:

这是我之前在此 URL 上发布的一些代码,适用于您的情况:

http://naterice.com/articles/69

strJSONToSend = theevent 
webserviceurl = "http://thedomain.com/api/push"

sResponseHTML = GetHTTP(strJSONToSend, webserviceurl)
If len(HTTPErrorHandeler) > 0 Then
  strResponse = HTTPErrorHandeler
Else
  strResponse = sResponseHTML
End If

Response.Write strResponse

Function GetHTTP(sSendHTML, sURL)
  'This script is provided under the Creative Commons license located'
  'at http://creativecommons.org/licenses/by-nc/2.5/ . It may not'
  'be used for commercial purposes with out the expressed written consent'
  'of NateRice.com'
  Set oHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
  oHTTP.Open "POST", sURL, false
  oHTTP.setRequestHeader "Content-Type", "application/json; charset=UTF-8" 
  oHTTP.setRequestHeader "HTTP_TOKENKEY","ABCDEFGHIJKLMNOPQ" 
  oHTTP.setRequestHeader "SOAPAction", webserviceurl

  On Error Resume Next
  oHTTP.send sSendHTML
  sHTTPResponse = oHTTP.responseText

  If Err.Number = 0 Then
    GetHTTP = sHTTPResponse
  Else
    GetHTTP = HTTPErrorHandeler
  End If
  On Error Goto 0

  Set oHTTP = Nothing
End Function


Function HTTPErrorHandeler
  'This script is provided under the Creative Commons license located'
  'at http://creativecommons.org/licenses/by-nc/2.5/ . It may not'
  'be used for commercial purposes with out the expressed written consent'
  'of NateRice.com'
  If Err.Number <> 0 Then
  HTTPErrorHandeler = "ERROR <br />" & _
             "  ERR Number: " & Err.Number & " <br />" & _
             "  ERR Description: " & Err.Description
  Else
  HTTPErrorHandeler = ""
  End If
End Function

【讨论】:

  • 只是想让您知道,6 年后,这仍然是一篇很棒的文章,让我非常容易使用和更改以满足我的需求。
猜你喜欢
  • 2011-08-28
  • 2011-12-05
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多