Ciao Daniele, io ho scritto il mio webservice in Delphi, che è il linguaggio che prediligo.
Il problema che ogni chiamata da parte del server delle agenzie Sogei torna con un errore " org.apache.axis2.AxisFault: HTTP ( 500 ) Internal Server Error address : https://26.2.162.231:80 " e da qui non se ne esce. Se io testo il mio servizio con SoapUI ( per esempio ) o con altri client Soap presenti on-line tutto funziona perfettamente, compreso l’handshake dei certificati SSL.
Quello che non riesco a comprendere è dove falliscano le chiamate che arrivano dall’SdI ed il perchè falliscano ( l’assistenza da risposte vage e senza senso … purtroppo ).
Per questa ragione sto provando a scriver il servizio SOAP con Php ( di cui ho poca esperienza ma mi ci arrabbatto ).
Quell’errore come ti ha scritto Daniele lo da quando la tua pagina server endpoint non è raggiungibile o anche quando vi è un errore di codice (come succedeva a me). La parte server se decidi di farla in php è molto semplice, la puoi ricostruire dai messaggi delle ultime 24 ore. Per la parte client (sempre in php) io ho usato nusoap che è una libreria standalone che mi ha aiutato molto coi suoi log dettagliati. Con la libreria MTOMSoapClient o il SoapClient base del php probabilmente ci metti molto più tempo a venirne a capo
Ok, ci sto provando … sul client non ho problemi infatti quello che ho scritto in Delphi funziona perfettamente ed invia i documenti … una domanda, se posso, vedo che nell’esempio sopra scritto Daniele scrisse di aver modificato il file wsdl e che l’unica variazione fatta è stata quella sulla schemalocation e sul soapbind:address location in modo che punti rispettivamente alla posizione del file xsd e all’endpoint, qui sulla posizione del file xsd si deve mettere l’indirizzo dov’è pubblicato oppure si può mettere anche la path assoluta di dove si trova il file ?
Ciao sembrerebbe tutto ok. Hai riavviato httpd dopo aver modificato il virtual?
L’endpoint chiamato è quello che hai registrato quindi https://xxx.xx.xx/soap/TrasmissioneFatture e a quello SDI si collega. Senza modificare il virtualhost potevi creare una cartella TrasmissioneFatture dentro soap e mettere lo script php dentro una pagina index.php
Ciao Walter, ho infatti fatto come da te suggerito … stupidamente inizialmente mi ero focalizzato sul modificare il percorso … quindi dentro la cartella /soap/TrasmissioneFatture ci ho messo il mio file index.hp … ora però l’SdI però mi fornisce l’errore org.apache.axis2.AxisFault: HTTP ( 301 ) Moved Permanently address : https://26.2.162.231:80 hai idea di quale possa essere il motivo ?
-il file TrasmissioneFatture_v1.1.wsdl (modificato con schemaLocation=“TrasmissioneTypes_v1.1.xsd” e soapbind:address location=tuo url) è nella directory TrasmissioneFatture?
-i permessi di lettura di TrasmissioneFatture_v1.1.wsdl sono corretti?
-TrasmissioneTypes_v1.1.xsd è nella directory TrasmissioneFatture?
-i permessi di lettura di TrasmissioneTypes_v1.1.xsd sono corretti?
Penso sia cmq un problema del browser del telefono in quanto di fatto Apache non risponde con alcun errore … Eseguendo il PhP funziona e non da errori …
nel soapserver va il puntamento relativo al tuo wsdl (se si trova nella stessa cartella, basta scrivere appunto il nome del wsdl, in caso contrario devi imputare le sotto directory)
nel file wsdl devi dire dove si trova lo schema xsd.
puoi farlo indicando il link assoluto al file (quindi compreso di https ) nello “schemalocation”
inoltre devi indicare al wsdl a quale endpoint è collegato.
e lo puoi fare riportando il link alla voce <soapbind:address location=
a quel punto deve andare salvo che non hai inserito qualche blocco http/https o riportato male i link
La configurazione apache è corretta. Se però il tuo sistena ospita più virtual host, il client SDI (che non supporta SNI) non riesce a effettuare correttamente la richiesta se il certificato da te esposto non risulta essere primario. Per ottenere questa configurazione devi accedere al primo file di configurazione per la connessione ssl che Apache carica (vedi lo schema in htppd.conf o apache2.conf a seconda della versione linux…). Nel mio caso viene caricato default_ssl.conf (server ubuntu).
Qui dentro devi trascrivere (copia e incolla) lo stesso blocco che hai citato sopra nella posizione della direttiva SSLEngin on. In questo modo “imbrogli” SDI che comunque accedendo trova esposto il suo certificato e può instaurare il dialogo
se l’endpoint che hai indicato nell’accordo stipulato è TrasmissioneFatture (senza slash finale) devi mettere nella root del tuo sito un file htaccess (o scrivere le stesse direttive nel virtualhost, meglio) che eseguano un rewrite delle richieste ^TrasmissioneFatture a TrasmissioneFatture/index.php, assumendo che il tuo script sia contenuto appunto in index.php
Ciao Antonio, anch’io ho il server Ubuntu.
Di fatto ho due virtualhost, anche se l’altro sulla porta 80 non mi serve, e quindi adesso lo tolgo.
Il problema però non pare sia sul certificato, ed infatti mi pare vada liscio.
Lo tolgo lo stesso per sicurezza. Ora ho aggiunto le direttive
RewriteEngine On
RewriteRule “^/soap/TrasmissioneFatture” “/soap/TrasmissioneFatture/index.php” [R]
per eliminare ogni possibile mismatch ti consiglio di rinominare la tua cartella TrasmissioneFatture in Trasmissione; quindi in htaccess devi avere qualcosa del genere:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^soap/TrasmissioneFatture soap/Trasmissione/index.php
leva il flag [R] perché identifica un redirect (che non deve esserci: deve essere solo un rewrite, trasparente per chi chiama, ovvero l’url non cambia chiamando lo scripts).
La verifica la puoi fare facendo stampare qualcosa a schermo dal tuo file index.
La stessa cosa devi fare per il tuo endpoint in ricezione: aggiungi a seguire un’altra direttiva Rewrite analoga