⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webservice.htc

📁 浏览器端看到树型目录结构,用户可以完整地看到像windows资源管理器一样的效果
💻 HTC
📖 第 1 页 / 共 5 页
字号:
        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 + -