Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Esistenza Partita IVA - SOAP

    Buongiorno ragazzi, come state?
    Stavo cercando di integrare un controllo di Partita IVA su un form.

    Non so se sapete che l'Unione Europea mette a disposizione uno strumento SOAP per la verifica non di validità ma proprio di esistenza del dato nei paesi della Comunità Europea.
    Fornisce a questo proposito un file WSDL a questo indirizzo:
    http://ec.europa.eu/taxation_customs...ckVatPort?wsdl

    Cercando un po' in giro per approfondire l'argomento (fino poco fa ero totalmente ignara di cosa fosse SOAP.... ) ho trovato un solo esempio, ma in PHP:

    Codice PHP:
    $url 'http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl';
    $vies = new SoapClient($url);
    $a=array(
    countryCode => "IT",
    vatNumber => "02709820134"
    );
    $ritorno $vies->checkVat($a);
    echo 
    '<pre>';
    print_r($ritorno);
    echo 
    '</pre>';
    if(
    $ritorno->valid)
    {
    echo 
    "Dato valido";
    }
    else
    {
    echo 
    "Dato non valido";

    Non riesco a capire come tradurre la cosa in ASP, qualcuno può darmi una manina o qualche dritta?
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  2. #2
    tu fai un xml formattato come richiede il link che hai postato, e lui ti risponde con un xml

    per farlo devi usare XMLHTTP o COM specifiche (se esistono e se ce l'hai installate sul server)

    tutto quà.. un pò come interagire con le api di youtube/google giusto per fare un esempio

    altro esempio:

    http://www.devarticles.com/c/a/ASP/A...g-ASP-and-VB6/
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Salve Santino,
    grazie per la risposta, ho letto anche l'articolo su DevArticles ma...
    ... posso dire che non c'ho capito niente????
    :master:

    E' proprio un argomento che non riesco a "collocare" e mi trovo veramente in difficoltà a trovare il bandolo della matassa!!!

    Vabbè, continuo a studiare, se vi viene in mente qualche altro esempio per "schiarirmi la testolina" threaddate pure!!!
    Ciaous.
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  4. #4
    Sto studiando e allo stesso tempo sto impazzendo....


    Dunque, ecco i miei nuovi tentativi.


    1. CLASSIC ASP
    -------------------------------------------------
    Ho preso spunto da questo articolo:
    http://www.guru4.net/articoli/asp-soap-client/

    Ho quindi creato il file soapclient.asp:
    Codice PHP:
    <%
    function SOAPClient()
    {
        var m_serviceurl;
        var m_servicenamespace = "";
        var m_methodname;    
        var m_parameters = new Array();

        this.setServiceUrl = function(val)
        {
            m_serviceurl = val;
        }

        this.setServiceNamespace = function(val)
        {
            m_servicenamespace = val;
        }
        
        this.setMethodName = function(val)
        {
            m_methodname = val;
        }

        this.addParameter = function(pname, pval)
        {
            m_parameters[pname] = pval;
        }




    this.call = function()
    {
        // load WSDL
        m_wsdl = Server.CreateObject("Microsoft.XMLDOM") ;
        m_wsdl.load(m_serviceurl + "?wsdl");            
            
        // build SOAP request
        var sXml = 
            "<?xml version=\"1.0\" ?>" +
            
    "<soap:Envelope " +
            
    "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
            
    "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
            
    "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
            
    "<soap:Body>" +
            
    "<" m_methodname " xmlns=\"" m_servicenamespace "\">";
        for(var 
    i in m_parameters)
            
    sXml += "<" ">" m_parameters[i] + "</" ">";
        
    sXml += "</" m_methodname "></soap:Body></soap:Envelope>";
        var 
    xmlHTTP Server.CreateObject("Msxml2.XMLHTTP");
        
    xmlHTTP.Open("Post"m_serviceurlfalse);
        
    xmlHTTP.setRequestHeader("SOAPAction"m_servicenamespace "/" m_methodname);
        
    xmlHTTP.setRequestHeader("Content-Type""text/xml; charset=utf-8");
        
    xmlHTTP.Send(sXml);
        
        
    // set raw xml
        
    m_rawxml xmlHTTP.responseXML.xml "";
        
        
    // .NET way - the only way :-)
        
    var nd xmlHTTP.responseXML.selectSingleNode("//" m_methodname "Result");
        if(
    nd == null)
        {
            if(
    xmlHTTP.responseXML.selectSingleNode("//faultcode/text()"))
                throw new 
    Error(500xmlHTTP.responseXML.selectSingleNode("//faultcode/text()").nodeValue " - " xmlHTTP.responseXML.selectSingleNode("//faultstring/text()").nodeValue);
            else
                return 
    null;
        }
        return 
    this.soapresult2object(nd);




    this.soapresult2object = function(node)
    {
        return 
    this.node2object(node);
    }

    this.node2object = function(node)
    {    
        
    // null node
        
    if(node == null)
            return 
    null;
        
    // text node
        
    if(node.nodeType == || node.nodeType == 4)
            return 
    this.extractValue(node);

        
    // leaf node
        
    if (node.hasChildNodes() && node.childNodes.length==&& (node.firstChild.nodeType == || node.firstChild.nodeType == 4))
            return 
    this.node2object(node.firstChild);
        var 
    isarray false;
        var 
    el m_wsdl.selectSingleNode("//s:element[@name='" node.nodeName "']");
        
    isarray = (el!=null && el.attributes.getNamedItem("type")!=null && (el.attributes.getNamedItem("type").nodeValue "").toLowerCase().indexOf("arrayof") != -1);

        
    // object node
        
    if(!isarray)
        {
            var 
    obj null;
            if(
    node.hasChildNodes())
                
    obj = new Object();
            for(var 
    0node.childNodes.lengthi++)
            {
                var 
    this.node2object(node.childNodes[i]);
                
    obj[node.childNodes[i].nodeName] = p;
            }
            return 
    obj;
        }

        
    // list node
        
    else
        {
            
    // create node ref
            
    var = new Array();
            for(var 
    0node.childNodes.lengthi++)
            {
                var 
    cn node.childNodes[i];
                
    l[l.length] = this.node2object(cn);
            }
            return 
    l;
        }
        return 
    null;



    this.extractValue = function(node)
    {
        var 
    value node.nodeValue;
        var 
    el m_wsdl.selectSingleNode("//s:element[@name='" node.parentNode.nodeName "']");
        var 
    type = (el != null && el.attributes.getNamedItem("type") != null) ? (el.attributes.getNamedItem("type").nodeValue "").toLowerCase() : null;
        switch(
    type)
        {
            default:
            case 
    "s:string":            
            {
                return (
    value != null) ? value "" "";
            }
            case 
    "s:boolean":
            {
                return 
    value+"" == "true";
            }
            case 
    "s:int":
            case 
    "s:long":
            {
                return (
    value != null) ? parseInt(value ""10) : 0;
            }
            case 
    "s:double":
            {
                return (
    value != null) ? parseFloat(value "") : 0;
            }
            case 
    "s:datetime":
            {
                if(
    value == null)
                    return 
    null;
                else
                {
                    
    value value "";
                    
    value value.substring(0value.lastIndexOf("."));
                    
    value value.replace(/T/gi," ");
                    
    value value.replace(/-/gi,"/");
                    var 
    = new Date();
                    
    d.setTime(Date.parse(value));                                        
                    return 
    d;                
                }
            }
        }        
    }
    %>
    E poi la pagina provasoap.asp, come da indicazioni:
    Codice PHP:
    <%@ PAGE LANGUAGE="JSCRIPT" %>

    <%
    // definizione dei dati
    var countryCode "IT"
    var 
    vatNumber "02709820134";

    // preparazione della chiamata al Web Service:
    var sc = new SOAPClient();
    sc.setServiceUrl("http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl");
    sc.setServiceNamespace("http://ec.europa.eu/taxation_customs/vies/api/checkVatPort");
    sc.setMethodName("checkVat");
    sc.addParameter("countryCode"countryCode);
    sc.addParameter("vatNumber"vatNumber);

    // chiamata e verifica
    var sc.call();
    if(
    != "valid")        // risposta OK
    {
        
    Response.Write("Partita IVA valida");
    }
    else                    
    // risposta KO
    {
        
    Response.Write("Partita IVA non valida")
    }
    %> 
    A parte il fatto che, nonstante nell'articolo si parli di Classic ASP, l'intestazione <%@ PAGE LANGUAGE="JSCRIPT" %> non mi sembra proprio Classic ma piuttosto ASP.net, infatti ricevo un bell'errore. L'ho quindi cambiata in <%@ LANGUAGE="JSCRIPT" %>.

    A questo punto l'errore diventa
    Codice PHP:
    Errore di run-time di Microsoft JScript error '800a01b6' 
    Proprietà o metodo non supportati dall'oggetto 
    /soapclient.asp, riga 32 
    E la riga in questione è la definizione della funzione CALL
    this.call = function()

    E qui non so davvero più dove mettere le mani.......
    Un aiutino da casa?



    2. JAVASCRIPT / AJAX
    -------------------------------------------------
    Seguendo le indicazioni dell'articolo correlato:
    http://www.guru4.net/articoli/javascript-soap-client/
    ho provato anche a realizzare la cosa in Javascript/Ajax.
    Vi risparmio ulteriori righe di codice, diciamo che ho seguito la falsa riga degli esempi illustrati alla pagina http://www.guru4.net/articoli/javasc...p-client/demo/ (scrivendo a parte la classe JS come illustrato e poi integrandola nella pagina), ma ricevo sempre un messaggio di errore JAVASCRIPT "Accesso Negato", anche cercando di ricreare in locale la situazione elementare "Hello World!".
    Questo da cosa può dipendere?



    Grazie in anticipo, baci.
    Vado a dormire, sono FUSA! :berto:
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  5. #5
    guarda è inutile che impazzisci dietro la parola SOAP. Per interrogare una pagina del genere basta passare con L'oggetto XMLHTTP un xml formattato come l'applicativo partita iva si aspetta. nel link che ti ho postato c'è in seconda pagina un esempio, in asp vbscript, che fa proprio questo: prende e manda una richiesta ad una pagina "soap" che risponde con un xml. tutto quà. mo quando ho tempo provo a vedere se trovo ancora qualcosa realizzato in asp a riguardo, però se tipo cerchi "asp xmlhttp" su google dovresti trovare esempi piu alla mano
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Ciao Santino.
    Ho riguardato meglio il link che mi hai postato e sto provando a fare esperimenti.
    Tuttavia a parte che non riesco a capire come sono fatte le pagine perchè il codice è sparso di qua e di là e sull'argomento mi ritengo ancora troppo inesperta, nonostante mi stia sforzando di capirci qualcosa.
    E poi sul file utilizzato per interrogare la pagina SOAP, ci sono righe tipo
    Codice PHP:
    Dim objHTTP As New MSXML.XMLHTTPRequest 
    che non mi pare proprio ASP, almeno per come lo conosco io!!!!
    Infatti ricevo errori a ripetizione "prevista fine istruzione"...
    Ho provato a sostituire con
    Codice PHP:
    Set objHTTP Server.CreateObject("MSXML2.ServerXMLHTTP"
    ma non succede nulla e nel migliore dei casi mi si pianta il browser.

    Boh, sono sempre più confusa, ora proverò a fare come dici tu, cercando su Google "asp xmlhttp", vediamo se trovo qualcosa di più abbordabile perchè fino adesso il buio è totale !! Mi basterebbe qualche esempio più comprensibile, quelli che ho trovato finora non mi sembrano tanto per "principianti".

    Grazie ancora, bye.
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  7. #7
    Ciao a tutti!
    Io dovrei controllare una Partita iva tramite web service in javascript.
    Qualcuno mi può aiutare?
    Grazie

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Riaprire una discussione dopo tre anni e mezzo non ha alcun senso!
    Oltretutto l'argomento è js e quindi hai sbagliato forum... Se non sbaglio, proprio in js, ti è già stato risposto a questa domanda.

    Roby

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.