Hi,
I was curious if I could make my webservice work with firefox client
webservice functionality. (i got it to work with webservice.htc)
I am able to get firefox to see my serverside web service methods
(instantiate a proxy and alert proxy.MyMethod to tell its a valid
function), but when I submit to them, I either get, "Cannot convert
javascript arg 0" or "not enough arguments" javascript errors. I am
thinking that perhaps firefox does not understand auto generated WSDL.
I do not have much experience with WSDL and so perhaps someone has
attempted such feat....
FireFoxTest.asp x
<script>
var proxy = null;
var wsdl_uri = "http://localhost/webtesting/service.xml";
function run (aValue1, aValue2)
{
if (!proxy) {
var listener = {
onLoad: function (aProxy)
{
proxy = aProxy;
proxy.setListen er(listener);
requestTranslat ion(aValue1, aValue2);
},
onError: function (aError)
{
alert(aError);
},
MyMathCallback : function (val)
{
alert('inside callback');
alert(val);
}
};
createProxy(lis tener);
}
else {
requestTranslat ion(aValue1, aValue2);
}
}
function createProxy(aCr eationListener)
{
try {
var factory = new WebServiceProxy Factory();
factory.createP roxyAsync(wsdl_ uri, "MyMathSoap ", "", true,
aCreationListen er);
}
catch (ex) {
alert(ex);
}
}
function requestTranslat ion (value1, value2)
{
if (proxy) {
alert(proxy.Add );
proxy.Add();
}
else {
alert("Error: Proxy set up not complete!");
}
}
</script>
</head>
<body MS_POSITIONING= "GridLayout ">
firefox version<br><br>
<form id="Form1" method="post" runat="server">
<a href="javascrip t:;" onclick="run(2, 7);">run</a>
WSDL:
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="htt p://schemas.xmlsoap .org/wsdl/http/"
xmlns:soap="htt p://schemas.xmlsoap .org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://tempuri.org/"
xmlns:soapenc=" http://schemas.xmlsoap .org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="htt p://schemas.xmlsoap .org/wsdl/mime/"
targetNamespace ="http://tempuri.org/"
xmlns="http://schemas.xmlsoap .org/wsdl/">
<types>
<s:schema elementFormDefa ult="qualified"
targetNamespace ="http://tempuri.org/">
<s:element name="Add">
<s:complexTyp e>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="n1"
type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="n2"
type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddRespon se">
<s:complexTyp e>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="AddResult "
type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetTest">
<s:complexTyp e />
</s:element>
<s:element name="GetTestRe sponse">
<s:complexTyp e>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetTestRe sult" type="s0:TestOb ject" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexTyp e name="TestObjec t">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Name"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Caption"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="InnerObje ct"
type="s0:TestIn nerObject" />
</s:sequence>
</s:complexType>
<s:complexTyp e name="TestInner Object">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="InnerValu e"
type="s:string" />
</s:sequence>
</s:complexType>
</s:schema>
</types>
<message name="AddSoapIn ">
<part name="parameter s" element="s0:Add " />
</message>
<message name="AddSoapOu t">
<part name="parameter s" element="s0:Add Response" />
</message>
<message name="GetTestSo apIn">
<part name="parameter s" element="s0:Get Test" />
</message>
<message name="GetTestSo apOut">
<part name="parameter s" element="s0:Get TestResponse" />
</message>
<portType name="MyMathSoa p">
<operation name="Add">
<input message="s0:Add SoapIn" />
<output message="s0:Add SoapOut" />
</operation>
<operation name="GetTest">
<input message="s0:Get TestSoapIn" />
<output message="s0:Get TestSoapOut" />
</operation>
</portType>
<binding name="MyMathSoa p" type="s0:MyMath Soap">
<soap:binding transport="http ://schemas.xmlsoap .org/soap/http"
style="document " />
<operation name="Add">
<soap:operati on soapAction="htt p://tempuri.org/Add"
style="document " />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="GetTest">
<soap:operati on soapAction="htt p://tempuri.org/GetTest"
style="document " />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="MyMath">
<port name="MyMathSoa p" binding="s0:MyM athSoap">
<soap:address location="http://localhost/webtesting/testwebservice. asmx"
/>
</port>
</service>
</definitions>
I was curious if I could make my webservice work with firefox client
webservice functionality. (i got it to work with webservice.htc)
I am able to get firefox to see my serverside web service methods
(instantiate a proxy and alert proxy.MyMethod to tell its a valid
function), but when I submit to them, I either get, "Cannot convert
javascript arg 0" or "not enough arguments" javascript errors. I am
thinking that perhaps firefox does not understand auto generated WSDL.
I do not have much experience with WSDL and so perhaps someone has
attempted such feat....
FireFoxTest.asp x
<script>
var proxy = null;
var wsdl_uri = "http://localhost/webtesting/service.xml";
function run (aValue1, aValue2)
{
if (!proxy) {
var listener = {
onLoad: function (aProxy)
{
proxy = aProxy;
proxy.setListen er(listener);
requestTranslat ion(aValue1, aValue2);
},
onError: function (aError)
{
alert(aError);
},
MyMathCallback : function (val)
{
alert('inside callback');
alert(val);
}
};
createProxy(lis tener);
}
else {
requestTranslat ion(aValue1, aValue2);
}
}
function createProxy(aCr eationListener)
{
try {
var factory = new WebServiceProxy Factory();
factory.createP roxyAsync(wsdl_ uri, "MyMathSoap ", "", true,
aCreationListen er);
}
catch (ex) {
alert(ex);
}
}
function requestTranslat ion (value1, value2)
{
if (proxy) {
alert(proxy.Add );
proxy.Add();
}
else {
alert("Error: Proxy set up not complete!");
}
}
</script>
</head>
<body MS_POSITIONING= "GridLayout ">
firefox version<br><br>
<form id="Form1" method="post" runat="server">
<a href="javascrip t:;" onclick="run(2, 7);">run</a>
WSDL:
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="htt p://schemas.xmlsoap .org/wsdl/http/"
xmlns:soap="htt p://schemas.xmlsoap .org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://tempuri.org/"
xmlns:soapenc=" http://schemas.xmlsoap .org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="htt p://schemas.xmlsoap .org/wsdl/mime/"
targetNamespace ="http://tempuri.org/"
xmlns="http://schemas.xmlsoap .org/wsdl/">
<types>
<s:schema elementFormDefa ult="qualified"
targetNamespace ="http://tempuri.org/">
<s:element name="Add">
<s:complexTyp e>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="n1"
type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="n2"
type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddRespon se">
<s:complexTyp e>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="AddResult "
type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetTest">
<s:complexTyp e />
</s:element>
<s:element name="GetTestRe sponse">
<s:complexTyp e>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetTestRe sult" type="s0:TestOb ject" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexTyp e name="TestObjec t">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Name"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Caption"
type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="InnerObje ct"
type="s0:TestIn nerObject" />
</s:sequence>
</s:complexType>
<s:complexTyp e name="TestInner Object">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="InnerValu e"
type="s:string" />
</s:sequence>
</s:complexType>
</s:schema>
</types>
<message name="AddSoapIn ">
<part name="parameter s" element="s0:Add " />
</message>
<message name="AddSoapOu t">
<part name="parameter s" element="s0:Add Response" />
</message>
<message name="GetTestSo apIn">
<part name="parameter s" element="s0:Get Test" />
</message>
<message name="GetTestSo apOut">
<part name="parameter s" element="s0:Get TestResponse" />
</message>
<portType name="MyMathSoa p">
<operation name="Add">
<input message="s0:Add SoapIn" />
<output message="s0:Add SoapOut" />
</operation>
<operation name="GetTest">
<input message="s0:Get TestSoapIn" />
<output message="s0:Get TestSoapOut" />
</operation>
</portType>
<binding name="MyMathSoa p" type="s0:MyMath Soap">
<soap:binding transport="http ://schemas.xmlsoap .org/soap/http"
style="document " />
<operation name="Add">
<soap:operati on soapAction="htt p://tempuri.org/Add"
style="document " />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="GetTest">
<soap:operati on soapAction="htt p://tempuri.org/GetTest"
style="document " />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="MyMath">
<port name="MyMathSoa p" binding="s0:MyM athSoap">
<soap:address location="http://localhost/webtesting/testwebservice. asmx"
/>
</port>
</service>
</definitions>
Comment