Passing an variant from classic ASP page to a .NET webservice

M

MarkusJNZ

Hi, I am trying to pass an number from a classic asp webpage to a .NET
webservice.

Because my C# webservice expects an integer and classic ASP uses
variants I keep getting problems with object casts;

In my asp page I have the following code which works fine

HTTP.Open "GET","http://myserver/myService.asmx/LogPerson?ID=100",
False

*IF* I do the following I get an error from the .NET webservice

"System.ArgumentException: Cannot convert to System.Int32. Parameter
name: type ---> System.FormatException: Input string was not in a
correct format"

Dim PersonID
PersonID=100
HTTP.Open "GET","http://myserver/myService.asmx/LogPerson?ID=" &
PersonID, False
==========

My signature in the webservice is simply

[WebMethod]
public bool LogPerson(int PersonID)
{
/// some code
return true;
}

I have tried changing my signature to

public bool LogPerson(object PersonID)

and then casting etc but I keep getting casting errors

Any help appreciated
Thanks in advance
MarkusJ
==================================
googlenews2006markusj
 
L

Laurent Bugnion, GalaSoft

Hi,

Hi, I am trying to pass an number from a classic asp webpage to a .NET
webservice.

Because my C# webservice expects an integer and classic ASP uses
variants I keep getting problems with object casts;

In my asp page I have the following code which works fine

HTTP.Open "GET","http://myserver/myService.asmx/LogPerson?ID=100",
False

That's not how web services work. Web services are not simple AJAX, they
are SOAP-encoded calls.

On the client, you need to create a POST request, and the request's body
must be compliant with SOAP. SOAP is a XML dialect, which encodes a
remote method call.

If you really want to do that, you need to study SOAP and create a
correctly encoded request. That's a lot of work (I did it for
JavaScript, and it needs a lot of study before getting it to work).
Nowadays, SOAP clients use proxy-generating code to make using web
services easier (.NET with Web references, JavaScript with ATLAS, etc...).

In your case, for something simple as that, I would recommend abandoning
web services and using a ASHX generic HTTP handler on .NET. Then it's
much, much easier to send GET requests to it. The ASHX handler can
return plain text, plain old XML, or whatever you can place into a Response.

See this article I wrote:
http://www.galasoft-lb.ch/mydotnet/articles/simple-ajax-pox-implementation-server.aspx

HTH,
Laurent
 
M

MarkusJNZ

Thanks for your help everyone.

In the end I just loaded the returned XML into an DOMObject

Set HTTP = CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =CreateObject("MSXML.DOMDocument")
HTTP.Open ...
xmlDOC.load(HTTP.responseXML)

and parsed the DOM object and it works a treat
again, thanks
Markus


Regards
Markus
 

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

Top