📄 webservice.htc
字号:
oCall.oXmlHttp = oXmlHttp;
oXmlHttp.xmlHttp.onreadystatechange = function() {getResult(oCall);};
try
{
oXmlHttp.xmlHttp.send(szPayload);
}
catch(e)
{
return postError(oCall, 5);
}
return oCall.id;
}
try
{
oXmlHttp.xmlHttp.send(szPayload);
}
catch(e)
{
return returnError(oCall, 5);
}
if (oXmlHttp.xmlHttp.responseXML.parseError.errorCode != 0)
{
_errUnknownS.raw = oXmlHttp.xmlHttp.responseText;
return returnError(oCall, 4);
}
var r;
try
{
r = processResult(oCall, oXmlHttp.xmlHttp.responseXML.documentElement);
}
catch (e)
{
return returnError(oCall, 7);
}
return r;
}
function callService(service, args)
{
var oC = allocCall();
if (args.length < 1)
{
return postError(oC, 0);
}
var cb = null;
var iM = 0;
if ( typeof args[0] == "function"
|| typeof args[0] == "object" && args[0].funcName == null)
{
iM = 1;
cb = args[0];
}
var co;
if (typeof args[iM] == 'string')
co = createCallOptions(args[iM]);
else
co = cloneObject(args[iM]);
oC.co = co;
oC.cb = cb;
oC.service = service;
oC.args = args;
if (co.async == null)
co.async = true;
if (co.funcName == null)
{
return postError(oC, 0);
}
var oS = _sdl[service];
if (oS == null)
{
return postError(oC, 1);
}
if (co.async == false)
return oS.fPending ? returnError(oC, 1) : _invoke(oC);
if (oS.fSeq || oS.fPending)
{
if (oS.lastCall != null)
oS.lastCall.next = oC;
else
oS.nextCall = oC;
oS.lastCall = oC;
}
if (oS.fPending)
{
return oC.id;
}
if (!oS.fSeq)
_invoke(oC);
else if (oC == oS.nextCall && (oS.aXmlHttp == null || oS.aXmlHttp.fFree))
invokeNext(service);
return oC.id;
}
function useService(szService, userName, options)
{
if ( szService == null || szService.length == 0
|| userName == null || userName.length == 0)
{
throw("Invalid arguments");
return;
}
var url = ensureWsdlUrl(szService);
var oProp = getAttribute(userName);
if (oProp == null)
{
oProp=document.createElement("<PUBLIC:PROPERTY NAME="+userName+" />");
_webservice.appendChild(oProp);
}
var oPropValue = new Object();
setAttribute(userName, oPropValue);
oPropValue.callService = function(){return callService(url, arguments)};
if (_sdl[url] != null)
{
if (options != null)
{
_sdl[url].fSeq = options.reuseConnection == null
? false : options.reuseConnection;
_sdl[url].SOAPHeader = options.SOAPHeader;
}
return;
}
var oXml = document.createElement("XML");
document.body.appendChild(oXml);
oS = new Object();
oS.sXmlHttp = null;
oS.aXmlHttp = null;
oS.fPending = true;
oS.nextCall = null;
oS.lastCall = null;
oS.url = url;
oS._oXml = oXml;
oS.ns = new Array();
oS.nsalias = new Array();
if (options != null)
{
oS.fSeq = options.reuseConnection;
oS.SOAPHeader = options.SOAPHeader;
}
if (oS.fSeq == null)
oS.fSeq = false;
_sdl[url] = oS;
oXml.service = userName;
oXml.onreadystatechange = getWsdl;
oXml.src = url;
return;
}
function getMsg(service, co, args, argIdx)
{
var oM;
var mn = co.funcName;
var oS = _sdl[service];
var sp = oS.soapPort[co.portName];
if (sp == null)
return null;
oM = sp.msgs[mn];
if (oM == null || oM.length == null)
{
return null;
}
var om1;
for (om1 in oM)
{
if (co.params != null || oM[om1].args.length == args.length - argIdx)
{
oM = oM[om1];
break;
}
}
if (oM.length != null)
oM = oM[om1];
return oM;
}
function fixupDT(x)
{
return (x < 10) ? ("0" + x) : x;
}
function encTZ(d)
{
var tzo = d.getTimezoneOffset();
return (tzo > 0 ? '-' : '+') + fixupDT(tzo / 60) + ':' + fixupDT(tzo % 60);
}
function encodePrimitive(os, argType, argVal)
{
var sz = '';
switch(_st[argType])
{
case 1 :
sz = argVal;
break;
case 2 :
sz = "<![CDATA[" + argVal + "]]>";
break;
case 3 :
try
{
sz = argVal.getFullYear()
+ "-" + fixupDT(argVal.getMonth() + 1)
+ "-" + fixupDT(argVal.getDate())
+ "T" + fixupDT(argVal.getHours())
+ ":" + fixupDT(argVal.getMinutes())
+ ":" + fixupDT(argVal.getSeconds())
+ (argVal.getMilliseconds==null
? '' : ('.' + argVal.getMilliseconds()))
+ encTZ(argVal);
}
catch (e) { sz = argVal; }
break;
case 4 :
try
{
sz = argVal.getFullYear()
+ "-" + fixupDT(argVal.getMonth() + 1)
+ "-" + fixupDT(argVal.getDate())
+ encTZ(argVal);
}
catch (e) { sz = argVal; }
break;
case 5 :
try
{
sz = fixupDT(argVal.getHours())
+ ":" + fixupDT(argVal.getMinutes())
+ ":" + fixupDT(argVal.getSeconds())
+ (argVal.getMilliseconds==null
? '' : ('.' + argVal.getMilliseconds()))
+ encTZ(argVal);
}
catch (e) { sz = argVal; }
break;
case 6 :
case 7 :
sz = encb64(argVal);
break;
default :
sz = argVal;
}
return sz;
}
//
// build Jscript array based on array size info and array dimension
// a[in,out] : jscript array to be built
// as[in] : array size array
// d[in] : dimension
//
function bldJsAry(a, as, d)
{
if (d == as.length-1)
return;
for (var i = 0; i < as[d]; i++)
{
a[i] = new Array();
bldJsAry(a[i], as, d+1)
}
}
//
// get the next array index following the last one passed in (ai)
// a[in] : array size array that holds array size information (5,5,5)
// ai[in,out] : previous index, we need to return the one next to it
// (1,3,4)'s next is (1,4,0)
// return : ai (byref), boolean : true if successful, false otherwise
//
function getNextIndexAry(a, ai)
{
var i;
var l = a.length;
if (ai.length == 0)
{
for (i = 0; i < l; i++)
ai[i] = 0;
return true;
}
for (i = l - 1; i >= 0; i--)
{
if (i == 0 && 1 + ai[0] > a[0] - 1)
return false;
var x = ai[i] + 1;
if (x <= a[i] - 1)
{
ai[i] = x;
return true;
}
ai[i] = 0;
}
return true;
}
//
// transform a VB array to a jscript array
// a[in] : vb array
// d[in] : vb array depth
// return : jscript array
//
function vbArrayToJs(a, d)
{
//
// create vb array accessor function for the specified depth
//
ensureVBArray(d);
var szSize;
//
// get vb array size information in string format, ex. "2,3,4"
//
try { szSize = VBGetArySize(a, d); } catch (e) {return new Array()}
var aSize = szSize.toString().split(",");
var aszIndex = new Array();
var ajs = new Array();
//
// prebuild jscript array
// we will fill this array later using eval, because we can't access
// vb array items
//
bldJsAry(ajs, aSize, 0);
//
// create array index array, ex. (1,2,3) to access that item in multiD
// aSize holds the size array for the multi-D array
// iterate all array items, do an eval like this:
// eval("ajs[i][j][k] = VBGetAryItemN(a, i, j, k);")
// note: N is the dimension of the array
//
var ai = new Array();
while (true == getNextIndexAry(aSize, ai))
{
var s = "ajs["+ai.join("][")+"]=VBGetAryItem"+d+"(a,"+ai.join(",")+");";
try { eval(s);} catch (e) {break;}
}
return ajs;
}
//
// encode array of elements (transform script array to XML encoded)
//
function encodeArray(os, t, nt, v, d)
{
var sz = "";
for (var i in v)
{
if (d == 1)
{
var ar = encodeVar(os, v[i], nt);
xt = ' xsi:type="' + (t.ns ==''?'':(t.ns + ':'))+t.type+'"';
sz += '\n<' + t.type + ar[1] +xt+'>' + ar[0] + '</' + t.type + '>';
}
else
sz += encodeArray(os, t, nt, v[i], d-1);
}
return sz;
}
function encodeVar(oS, v, t)
{
var ar = new Array("", "");
if (v == null)
return ar;
var oschm = getSchema(oS, t);
var ae = t.fArray ? t : getAryElem(os, oschm, t);
if (ae != null)
{
if (typeof v != 'object' && typeof v != 'unknown')
return ar;
var nt = cloneObject(ae);
nt.fArray = false;
var sArr = ae.sizeArray;
var k = 1;
k = (sArr == null) ? 1 : sArr.length;
if (typeof v == 'unknown')
v = vbArrayToJs(v, k);
ar[0] += encodeArray(oS, ae, nt, v, k);
return ar;
}
if (isSimpleType(oS, oschm, t))
{
ar[0] = encodePrimitive(oS, t.type, v);
return ar;
}
var et = oschm.types[t.type];
if (et == null)
{
try
{
var os = v.childNodes;
for (var i = 0; i < os.length; i ++)
{
ar[0] += os[i].xml;
}
}
catch (e)
{
ar[0] += v;
}
return ar;
}
if (typeof v != 'object' || v.length > 0)
{
var et1 = get1stAryItem(et);
if (et1 == null)
return ar;
return encodeVar(oS, v, et1)
}
for (var k in et)
{
if (et[k] == null)
continue;
if (v[k] == null)
{
if (!et[k].fAttrib)
ar[0] += '\n<' + et[k].name + ' xsi:null="true"' + '/>\n';
continue;
}
if (et[k].fAttrib)
{
ar[1] += encodeAttrib(oS, v[k], et[k]);
continue;
}
var qt = "";
var asi = "";
var it = getAryElem(oS, getSchema(oS, et[k]), et[k]);
var soapencns = oS.qlt["soapenc"];
if (it != null)
{
asi = getArySizeInfo(it, v[k]);
var ts = (isPrimitive(oS, it) || et[k].ns == "")
? "xsd:" : (et[k].ns + ":");
asi = ' xsi:type="' + soapencns + ':Array" '
+ soapencns + ':arrayType="' + ts + it.type+'['+ asi +']"';
}
else if (isPrimitive(oS, et[k]))
qt = ' xsi:type="xsd:' + et[k].type + '"';
var ark = encodeVar(oS, v[k], et[k]);
ar[0] += '\n<' + et[k].name + qt + asi + ark[1] + '>'
+ ark[0] + '</' + et[k].name + '>';
}
return ar;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -