Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di mjungle
    Registrato dal
    Mar 2002
    Messaggi
    173

    inviare messaggi soap a un web service

    Ciao a tutti.
    Ho un po' di confusione in testa a proposito di webservice (ws). Devo collegarmi a un ws tramite pagina ASP e inviare dei dati, ma non sono certo che il procedimento che seguo sia quello corretto. Di seguito vi riporto il codice che ho scritto. Nello specifico funziona, il messaggio viene trasmesso e il ws mi restituisce la risposta corretta. Il problema nasce quando le richieste che invio sono più corpose. Praticamente recupero i dati dal mio database per poi inviarli al ws. Se uso un sw ad hoc per il dialogo con i ws, tutto funziona, se uso uno script implementato come quello che segue (cambia sostanzialemente la lunghezza dal messaggio SOAP) il solo risultato che ottengo è uno "Status: 500 - Internal Server Error".

    Posso chiedervi cosa non funziona nel codice che segue o cosa può essere fatto diversamente?

    <%
    ' /// ---------------- / SUB / ---------------- ///

    private sub sendXMLHttpHeader(strSOAP, strURL)

    objXMLHttp.Open "POST", strURL, false
    objXMLHttp.setRequestHeader "Host", "test.dominio.it"
    objXMLHttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
    objXMLHttp.setRequestHeader "Content-Length", Len(strSOAP)

    objXMLHttp.send (strSOAP)

    end sub


    ' /// ---------------- / INVIO MESSAGGIO SOAP / ---------------- ///

    set objXMLHttp = CreateObject("Msxml2.XMLHTTP")

    strSOAP = "<?xml version=""1.0"" encoding=""utf-8""?>"
    strSOAP = strSOAP & "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">"
    strSOAP = strSOAP & "<soap12:Body>"
    strSOAP = strSOAP & "<SignIn xmlns=""http://schema.dominio.it/"">"
    strSOAP = strSOAP & "<username>userPippo</username>"
    strSOAP = strSOAP & "<password>pswPippo</password>"
    strSOAP = strSOAP & "</SignIn>"
    strSOAP = strSOAP & "</soap12:Body>"
    strSOAP = strSOAP & "</soap12:Envelope>"

    strURL = "http://test.dominio.it:81/partner/services/uploadservice.asmx"

    '/// Funzione per l'invio degli header XMLHttp
    call sendXMLHttpHeader(strSOAP, strURL)

    Response.Write "

    Status: " & objXMLHttp.status & " - " & objXMLHttp.statusText

    set objXMLHttp = nothing
    %>

    Vi ringrazio per l'aiuto.

    P.S.: date per scontato che i mime che uso e il soap che scrivo siano corretti.

    ;-)

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    non hai una area per testare se la tua variabile contenga la stringa giusta ?

  3. #3
    Utente di HTML.it L'avatar di mjungle
    Registrato dal
    Mar 2002
    Messaggi
    173
    Purtroppo no.
    Ho letto e riletto il wsdl, controllato gli elementi obbligatori, nillable & Co più e più volte, e tutto è giusto.
    Ti ripeto però, quella che ho postato funziano, sono quelle con molti più elementi - e qundi più valori da passare - che non funzionano.
    Per quello che puoi vedere, secondo te, quello che faccio è il metodo corretto?

    Grazie ;-)

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    non conoscendo il webservice è arduo dirti se è corretto o meno...


    ma se fai uan chiamata di login tramite la tua sub

    private sub sendXMLHttpHeader(strSOAP, strURL)

    objXMLHttp.Open "POST", strURL, false
    objXMLHttp.setRequestHeader "Host", "test.dominio.it"
    objXMLHttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
    objXMLHttp.setRequestHeader "Content-Length", Len(strSOAP)

    objXMLHttp.send (strSOAP)

    end sub

    e tutto funziona...
    la cosa mi fa pensare che la stringa non è giusta...

    a volta alcuni webservice vogliono i caratteri encoded...
    ma dovrebbe essere specificato nella docs...

    nel caso fai un server.urlencode(strSOAP)
    prima di objXMLHttp.send (strSOAP)

    in ogni caso nella sub non vedo i controlli del flusso di ritorno
    che oltre a dirti che lo status è 500 dovrebbe anche riportarti un errore specifico.

  5. #5
    Utente di HTML.it L'avatar di mjungle
    Registrato dal
    Mar 2002
    Messaggi
    173
    Ciao agenti,
    grazie per l'aiuto. I controlli sui messaggi di ritorno li faccio, non li ho postati solo perché ininfluenti per la procedura di invio. Lunedì quando rientro a lavoro provo subito ad aggiungere la funzione server.urlencode(strSOAP), poi ti dico.
    Grazie ancora, proprio non riesco venirne a capo.

    Ciao ;-)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.