在ASP 3.0中调用Web服务的多种方法

在开发Web应用程序时,经常需要调用远程Web服务。在ASP.NET中,这相对容易,因为.NET框架提供了内置支持。然而,在ASP 3.0中调用相同的Web服务则更具挑战性。经过深入研究,发现了三种完全不同的方法可以实现这一目标。

使用客户端JavaScript

这种方法利用了客户端JavaScript来调用Web服务。以下是一些很好的资源链接:

使用MicrosoftSOAPToolkit 2.0

这是一种最常见且易于使用的方法。但微软建议不要使用它。具体原因请查看以下链接:

微软表示:“SOAPToolkit已经被.NET Framework所取代。SOAP Toolkit的支持将在2005年4月结束,扩展支持将在2008年4月结束。”

尽管如此,对于初学者来说,以下是使用这种技术的方法和代码:

<html> <head> <title>使用SOAP Toolkit从经典ASP调用Web服务</title> </head> <body> <% ' 仅处理POST请求 If Request.ServerVariables("REQUEST_METHOD") = "POST" Then Dim oSOAP Set oSOAP = Server.CreateObject("MSSOAP.SoapClient") oSOAP.ClientProperty("ServerHTTPRequest") = True oSOAP.mssoapinit("http://localhost/Add/SimpleAddService.asmx?wsdl") Response.write(oSOAP.Add(Request.Form("text1"), Request.Form("text2")) & "<BR>") End If %> <FORM method="POST" name="form1"> 输入要相加的两个值。<BR> <INPUT type="text" name="text1"> <INPUT type="text" name="text2"> <BR><BR> <INPUT type="submit" value="Add" name="submit1"> </form> </body> </html>

使用MSXML解析器

这种方法利用了.NET框架和MSXML解析器来在ASP3.0中调用Web服务。以下是示例代码。需要安装.NET框架,可以免费下载。

<html> <head> <title>从经典ASP调用Web服务</title> </head> <body> <% If Request.ServerVariables("REQUEST_METHOD") = "POST" Then Dim xmlhttp Dim DataToSend DataToSend = "Val1=" & Request.Form("text1") & "&Val2=" & Request.Form("text2") Dim postUrl postUrl = "http://localhost/Add/SimpleAddService.asmx/Add" Set xmlhttp = server.Createobject("MSXML2.XMLHTTP") xmlhttp.Open "POST", postUrl, false xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" xmlhttp.send DataToSend Response.Write(xmlhttp.responseText) End If %> <FORM method="POST" name="form1"> 输入要相加的两个值 <BR> <INPUT type="text" name="text1"> <INPUT type="text" name="text2"> <BR> <BR> <INPUT type="submit" value="Add" name="submit1"> </form> </body> </html>

HTTP POST请求和响应

以下是HTTP POST请求和响应的示例。需要用实际值替换占位符。

POST /Add/SimpleAddService.asmx/Add HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: length Val1=string&Val2=string

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://tempuri.org/"> string </string>

以上是使用HTTP POST调用Web服务时需要构建的请求和响应格式。为什么要解释这个呢?因为如果想使用XMLHTTP调用Web服务,那么需要构建要发布的请求消息,只有在成功发布后,才能期望得到正确的响应。

为什么使用POST方法而不是GET方法?

这个问题可能已经浮现在脑海中:为什么需要POST方法而不是GET方法?是的,完全可以使用GET方法调用Web服务,但不能通过GET方法传递参数给WEBMETHOD。不明白这怎么可能,但如果有人知道一种技术,请在下面留言告诉,因为非常期待。

VBScript构建数据

以下是构建要发送的HTTP POST数据的代码行:

VBScript DataToSend = "Val1=" & Request.Form("text1") & "&Val2=" & Request.Form("text2")

VBScript设置请求方法和URL

这行代码指示要使用的方法是POST,postUrl是要发送请求的URL。

VBScript xmlhttp.Open "POST", postUrl, false

VBScript设置请求头

在这里设置请求头,设置Content-Type。然后发布数据。就是这样,最后使用responseText获取Web服务返回的文本。如果愿意,完全可以将响应内容类型设置为XML,然后使用xmlhttp.responseXml以XML格式获取数据。这完全取决于需求。已经尽力阐述了对这种特定技术的了解。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485