passing complex data types with vbscript?

G

greg

We have a set of .NET web services to provide access to our data. They
use complex data types for both incoming data and return data. We are
attempting to help another group access this web service from
vbscript/ASP. Is this possible? I have found a few posts scattered
around the internet saying complex data types aren't possible with
vbscript.

Is this true? Can I manually create my XML document in the vbscript,
pass it to the web service, then manually deconstruct the return XML?

Thanks,
Greg
 
K

Kirk Allen Evans

Absolutely, it's possible. Here's the web service:

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(PhoneNumber tn)
{
return "Phone number is: (" + tn.NPA + ")" + tn.NXX + "-" + tn.Line;
}
}

public class PhoneNumber
{
private string _npa;
private string _nxx;
private string _line;

public PhoneNumber()
{
}

public PhoneNumber(string npa, string nxx, string line)
{
_npa = npa;
_nxx = nxx;
_line = line;
}


public string NPA
{
get { return _npa; }
set { _npa = value; }
}
public string NXX
{
get { return _nxx; }
set { _nxx = value; }
}


public string Line
{
get { return _line; }
set { _line = value; }
}
}

The following uses JavaScript to call the web service, but the same exact
steps would apply for VBScript. You can concatenate a string, or you can
use the DOM model (more information at
http://support.microsoft.com/kb/893659/).

The following is an HTML file, no ASP.NET or anything involved here (nothing
but client code).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<script language="javascript">
function CallWS(npa, nxx, line)
{
var x;
x = new ActiveXObject("Microsoft.XMLHTTP");

var envelope;
envelope = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
"<soap:Body>" +
"<HelloWorld xmlns=\"http://tempuri.org/\">" +
"<tn>" +
"<NPA>" + npa + "</NPA>" +
"<NXX>" + nxx + "</NXX>" +
"<Line>" + line + "</Line>" +
"</tn>" +
"</HelloWorld>" +
"</soap:Body>" +
"</soap:Envelope>";
// send the POST to the Web service
x.open("POST", "http://localhost:8080/WebSite2/WebService.asmx",
false);
x.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
x.setRequestHeader("SOAPAction", "http://tempuri.org/HelloWorld");
x.send(envelope);
alert(x.responseText);
}
</script>

<button onclick="CallWS('404','555','1212');return false;" />
</body>
</html>


Kirk Allen Evans
Developer Evangelist
Microsoft Corporation
blogs.msdn.com/kaevans
 
G

greg

Thanks for the replies. I hadn't mentioned that it was a SOAP web
service, so I'm glad you included that in your example.

It looks like I will need to construct my SOAP message and body
manually, which is fine.

Thanks for the tip on XML Serialization, I'll look into that also.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top