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

📄 webserviced.htc

📁 浏览器端看到树型目录结构,用户可以完整地看到像windows资源管理器一样的效果
💻 HTC
📖 第 1 页 / 共 5 页
字号:
    if (i-4 < l)
        ai = decb64hlp(a, ai, ca, i-3, l-1);
    if (!fStr)
        return a;
    var r = '';
    try
    {
        r = String.fromCharCode.apply(element, a);
    }
    catch (E)
    {
        for (i = 0; i < a.length; i++)
            r += String.fromCharCode(a[i]);
    }
    return r;
}

function ensureWsdlUrl(szService)
{
    if (szService.length == 0)
        return;
    if (szService.indexOf("://") > 0)
        return szService;

    var baseUrl = element.document.URL;
    if (szService.charAt(0) == "/")
    {
        var hosti = baseUrl.indexOf("://");
        if (hosti > 0)
        {
            var host = baseUrl.substr(hosti + 3, baseUrl.length-1);
            hosti = host.indexOf("/");
            if (hosti < 0)
                return baseUrl + szService;
            hosti = baseUrl.indexOf(host) + hosti;
            return baseUrl.substr(0, hosti) + szService;
        }
    }
    var qi = baseUrl.lastIndexOf("?");
    var url2 = qi > 0 ? baseUrl.substr(0, qi) : baseUrl;
    return  url2.substr(0, baseUrl.lastIndexOf("/"))
            + "/" + szService + (szService.indexOf(".")>=0 ? "" : ".asmx?wsdl");
}

function allocCall()
{
    var o = new Object();
    o.fDone = false;
    o.next = null;
    o.id = _nextId;
    _nextId++;
    return o;
}

function fnShowProgress()
{
    if (_mProg == null)
    {
        var s = "<MARQUEE WIDTH=160 HEIGHT=20 BEHAVIOR=alternate SCROLLDELAY=1"
              + " STYLE='background:lightblue;position:absolute;top:0;left:0'>"
              + "</MARQUEE>";
        _mProg = element.document.createElement(s);
        _mProg.innerHTML = L_InProgress_Text;
    }
    if (_mProg.parentElement == null)
        element.document.body.insertAdjacentElement("beforeEnd",_mProg);
}

function isSimpleType(os, oschm, t)
{
    return oschm == null || oschm.sTypes[t.type]!=null;
}

function isPrimitive(os, t)
{
    return os.ns[t.ns] == os.ns["xsd"];
}

function getWsdl()
{
    var szService = null;

    for (var aService in _sdl)
    {
        if (_sdl[aService] == null)
            continue;
        var xmlisld = _sdl[aService]._oXml;
        if (xmlisld == null)
            continue;
        if (   _sdl[aService].fPending
            &&  xmlisld.XMLDocument.readyState == 4)
        {
            _sdl[aService].fPending = false;
            szService = aService;
            break;
        }
    }

    if (szService == null)
        return;

    dbgPrint("WSDL : " + szService + " received\n");

    var oS = _sdl[szService];
    var fImportDone = loadImports(oS);
    if (fImportDone)
        processService(oS);
}

function processService(oS)
{
    var xmlSdl = oS._oXml.documentElement;

    try
    {
        parseWsdl(oS, xmlSdl);
    }
    catch(e)
    {
        xmlSdl = null;
    }

    var evt = createEventObject();
    evt.serviceUrl = oS.url;
    evt.userName = oS._oXml.service;
    evt.serviceAvailable = xmlSdl != null;
    evt.WSDL = xmlSdl;

    oS._oXml.removeNode(true);
    oS._oXml = null;

    dbgPrint(oS.url+(xmlSdl==null ? " not" : "")+" available\n");
    if (xmlSdl == null)
    {
        for (var nc = oS.nextCall; nc != null; nc = nc.next)
            returnError(nc, 1);
        _sdl[oS.url] = null;
        eventService.fire(evt);
        return;
    }
    eventService.fire(evt);
    dbgRunPendingTests(oS);
    if (oS.fSeq)
        return callNext(oS);
    while (oS.nextCall != null)
    {
        var nc = oS.nextCall;
        oS.nextCall = oS.nextCall.next;
        _invoke(nc);
    }
}

function onImportLoaded(oS)
{
    for (var i = 0; i < oS.imports.length; i++)
    {
        if (    oS.imports[i] == null
            ||  !oS.imports[i].fPending
            ||  oS.imports[i].XMLDocument.readyState!=4)
            continue;
        var oImp = oS.imports[i].documentElement;
        if (oImp == null)
            continue;
        oS.imports[i].fPending = false;
        oS.cImporting --;
        var xmlSdl = oS._oXml.documentElement;
        switch (oImp.baseName)
        {
        case "definitions" :
            for (var j = 0; j < oImp.attributes.length; j++)
            {
                var oAtt = oImp.attributes.item(j);
                if (oAtt.name == "xmlns")
                    continue;
                var ii = oAtt.name.indexOf("xmlns:");
                if (ii != 0)
                    continue;
                var nsn = oAtt.name.substring(6, oAtt.name.length);
                if (oS.ns[nsn] != null)
                    continue;
                oS.ns[nsn] = oAtt.value;
                oS.nsalias[oAtt.value] = nsn;
            }
            for (var j = oImp.childNodes.length - 1; j >= 0; j --)
                xmlSdl.appendChild(oImp.childNodes[j]);
            break;
        case "types" :
        case "message" :
        case "portType" :
        case "binding" :
        case "service" :
            xmlSdl.appendChild(oImp);
            break;
        default :
            var nsq = getQualifier(xmlSdl.nodeName);
            nsq = nsq.length == 0 ? "" : (nsq + ":");
            var nt = oS._oXml.XMLDocument.createElement(nsq + "types");
            xmlSdl.appendChild(nt);
            nt.appendChild(oImp);
        }
        dbgPrint("Imported (" + i + ");" + oS.cImporting + " left\n");
        oS.imports[i].removeNode(true);
        oS.imports[i] = null;
        if (oS.cImporting == 0)
        {
            dbgPrint(oS._oXml.documentElement.xml + "\n");
            processService(oS);
            return;
        }
    }
}


function loadImports(oS)
{
    var xmlSdl = oS._oXml.documentElement;
    if (xmlSdl == null)
        return true;
    var nsq = getQualifier(xmlSdl.nodeName);
    nsq = nsq.length == 0 ? "" : (nsq + ":");
    var nImp     = xmlSdl.selectNodes(nsq + "import");
    if (nImp.length == 0)
        return true;
    dbgPrint("loading imports\n");
    oS.imports = new Array();
    oS.cImporting = 0;
    for (var i = 0; i < nImp.length; i++)
    {
        var oImp = document.createElement("XML");
        document.body.appendChild(oImp);
        oImp.fPending = true;
        oS.imports[i] = oImp;
        oImp.onreadystatechange = function() {onImportLoaded(oS)};
        var impUrl = getAttrib(nImp[i], "location");
        if (impUrl == null)
            continue;
        oS.cImporting ++;
        dbgPrint("loading import " + impUrl + "\n");
        oImp.src = impUrl;
    }
    return false;
}

function invokeNext(svcName)
{
    dbgPrint("calling next in " + svcName + "\n");
    var oS = _sdl[svcName];
    if (oS == null)
        return;
    var oC = oS.nextCall;
    if (oC == null)
        return null;
    dbgPrint(oC.id + " will be called\n");
    oS.nextCall = oC.next;
    if (oS.nextCall == null)
        oS.lastCall = null;
    _invoke(oC);
}

function callNext(oS)
{ 
    dbgPrint("reuseConnection(" + (oS.fSeq ? "on" : "off") + ") call next\n");
    if (oS.fSeq)
        setTimeout(element.uniqueID + '.invokeNext("' + oS.url + '")', 0);
}

function getAttrib(o, sAName)
{
    if (o.attributes == null)
        return null;
    var a = o.attributes.getNamedItem(sAName);
    if (a != null)
        return a.value;
    return null;
}

function getBaseName(str)
{
    var a = str.split(":");
    if (a.length > 1)
        return a[1];
    return str;
}

function getQualifier(str)
{
    var a = str.split(":");
    if (a.length > 1)
        return a[0];
    return '';
}

function getNextNsq(oS)
{
    var nsq1;
    do
    {
        nsq1 = "mswsb" + _nextNsQ;
        _nextNsQ ++;
    }
    while (oS.ns[nsq1] != null)
    return nsq1;
}

function getUniqueNsq(oS, o, litNsq)
{
    if (litNsq == null)
        return litNsq;
    var nsuri = null;
    if (litNsq == '')
        nsuri = o.namespaceURI;
    else
    {
        var o1 = o;
        while (o1 != null)
        {
            nsuri = getAttrib(o1, 'xmlns:'+litNsq);
            if (nsuri != null)
                break;
            o1 = o1.parentNode;
        }
    }
    if (nsuri == null)
        return litNsq;
    var nsq1 = oS.nsalias[nsuri];
    if (nsq1 != null)
        return nsq1;
    litNsq = getNextNsq(oS);
    oS.ns[litNsq] = nsuri;
    oS.nsalias[nsuri] = litNsq;
    return litNsq;
}

function parseSimpleType(oS, oschm, o, ssffx)
{
    var ns = getQualifier(o.tagName);
    var o1 = o.firstChild;
    if (o1 == null)
        return null;

    var sn = getAttrib(o, "name");
    if (sn == null)
        return null;
    sn = getBaseName(sn);
    
    var ot = new Object();
    ot.name = sn;
    switch(o1.baseName)
    {
    case 'restriction' :
        var base = getAttrib(o1, "base");
        if (base == null)
        {
            ot.ns = "xsd";
            ot.type = "string";
        }
        else
        {
            ot.type = getBaseName(base);
            ot.ns = getQualifier(base);
        }
        oschm.sTypes[sn] = ot;
        break;
    case 'list' :
    case 'union' :
        //
        // treat union/list as string
        //
        ot.type = "string";
        ot.ns = "xsd";
        oschm.sTypes[sn] = ot;
        break;
    default:
        ot = null;
    }
    return ot;
}

function parseType(oS, oschm, o, ssffx)
{
    if (o == null)
        return null;
    switch(o.baseName)
    {
    case "complexType" :
        return parseComplexType(oS, oschm, o, ssffx);
    case "simpleType" :
        return parseSimpleType(oS, oschm, o, ssffx);
    }
    return null;
}

function parseArrayType(at, sz)
{
    var asa = sz.split("[");
    if (asa.length <= 1)
    {
        asa = sz.split(",");
        for (var i = 0; i < asa.length; i++)
        {
            var ii = parseInt(asa[i]);
            at[at.length] = isNaN(ii) ? null : ii;
        }
        return;
    }
    for (var i=0; i < asa.length; i++)
        parseArrayType(at, asa[i]);
}

function parseComplexType(oS, oschm, o, ssffx)
{
    var ns = getQualifier(o.tagName);
    if (!o.hasChildNodes())
        return null;
    var ot = null;
    for (var j = 0; j < o.childNodes.length; j++)
    {
        var o1 = o.childNodes[j];
        switch(o1.baseName)
        {
        case 'sequence' :
        case 'all' :
            var ao = o1.selectNodes(ns.length ? (ns+':any') : 'any');
            if (ao.length != 0)
                continue;
            ao = o1.selectNodes(ns.length ? (ns+':element') : 'element');
            if (ao.length == 0)
                continue;
            if (ot == null)
                ot = new Array();
            for (var i = 0; i < ao.length; i++)
            {
                var s = getAttrib(ao[i], "name");
                if (s == null)
                {
                    var s = getAttrib(ao[i], "ref");
                    if (s != null)
                    {
                        oS.refs[s] = ot;
                    }
                }
                else
                    ot[s] = parseElem(oS, oschm, ao[i], ssffx);
            }
            continue;
        case 'complexContent' :
            var o2 = o1.firstChild;
            switch(o2.baseName)
            {
            case 'extension' :
                var base = getAttrib(o2, "base");
                if (base == null) 
                    continue;
                var ab = base.split(":");
                var oBase = new Object();
                oBase.nsuri = ab.length > 1 ? oS.ns[ab[0]] : oschm.uri;
                oBase.base = ab.length > 1 ? ab[1] : ab[0];
                ot = parseComplexType(oS, oschm, o2, ssffx);
                oBase.type = getAttrib(o, "name");
                oBase.derivedType = ot;
                oBase.fExpanded = false;
                if (oBase.type != null)
                    oS.exts[oBase.type] = oBase;
                else
                    oS.exts[oS.exts.length] = oBase;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -