Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Framek
    Registrato dal
    Apr 2010
    Messaggi
    22

    Autenticazione e lettura da webservice SOAP

    Ciao a tutti... da qualche giorno sto provando (ed ho qualche difficoltà) ad accedere ad un webservice SOAP che richiesde uid e pass (Stringhe) per autenticarmi... se ciò va a buon fine, il webservice mi resituisce un messaggio che mi conferma la corretta autenticazione ed una seconda stringa che potrò utilizzare per eseguire altri metodi... ma questo viene dopo. Il punto è che, creato un progetto Java con netbeans, tasto dx sul progetto e quindi NEW--OTHER--WEB SERIVCE CLIENT, inserito l'url del WSDL, il sistema mi autogenera delle classi che mi permettono di "andare a vanti" ed utilizzare quindi i metodi "letti dal wsdl", tra i quali il LOGIN(String uid, String psw)... bene, scrivo quindi un piccolo main che posto di seguito:
    codice:
    package webserviceclient;
    
    import it.servizi.ServiziPort;
    import it.servizi.ServiziService;
    
    public class WebServiceClient {
    
        
        public static void main(String[] args) {
        try{
            String uid="pippo";
            String psw="pluto";
            
            String result = login(uid, psw);
            System.out.println(result);
            
            }catch(Exception e){
            System.out.println("Eccezione: "+e);
            }
        }
    
        private static String login(java.lang.String username, java.lang.String password) {
            ServiziService service = new ServiziService();
            ServiziePort port = service.getServiziPort();
            
            return port.login(username, password);
        }
        
    }
    Credo che sia corretto.. lo compilo ed è ok.. ma mi esce questa eccezione:
    codice:
    Eccezione: com.sun.xml.internal.ws.client.ClientTransportException: Il server ha inviato il codice di stato HTTP 302: Found
    Qualcuno di voi ha mai avuto tale necessità? dove sbaglio?
    Grazie anticipate.
    L'importante è non smettere di interrogarsi. La curiosità ha una precisa raggione per l'esistenza!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Fatti stampare lo stackTrace dell'eccezione (in questo momento lo stai castrando).
    Ne ho usati parecchi di WebService Client generati da JAXB direttamente da NetBeans e non mi pare di vedere nulla di strano nel tuo codice. Sembrerebbe più che altro una response non conforme da parte del server. Un HTTP 302 è un redirect...

    Un modo molto rapido per verificare cosa risponde il server è usare SoapUI (un softwearino gratuito molto utile in questi casi).


    Gli unici WebService con cui ho dovuto smadonnare sono quelli generati con tecnologia .NET (per i quali va fatto un lavoro a mano perchè il wsimport riesca a capirci qualcosa, ma non mi pare tu abbia avuto problemi in tal senso nella generazione delle classi).


    Ciao.
    Ultima modifica di LeleFT; 01-03-2019 a 15:56
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Framek
    Registrato dal
    Apr 2010
    Messaggi
    22
    Ciao LeleFT e grazie per avermi risposto.. ho tolto il try{}catch ed ecco l'interno codice di errore..
    codice:
    Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: Il server ha inviato il codice di stato HTTP 302: Found
        at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:310)
        at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:259)
        at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:217)
        at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:130)
        at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:95)
        at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:1121)
        at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:1035)
        at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:1004)
        at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:862)
        at com.sun.xml.internal.ws.client.Stub.process(Stub.java:448)
        at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:178)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77)
        at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147)
        at com.sun.proxy.$Proxy29.login(Unknown Source)
        at webserviceclient.WebServiceClient.login(WebServiceClient.java:31)
        at webserviceclient.WebServiceClient.main(WebServiceClient.java:19)
    /Users/framek/NetBeansProjects/WebServiceClient/nbproject/build-impl.xml:1041: The following error occurred while executing this line:
    /Users/framek/NetBeansProjects/WebServiceClient/nbproject/build-impl.xml:806: Java returned: 1
    L'importante è non smettere di interrogarsi. La curiosità ha una precisa raggione per l'esistenza!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ok, persiste il redirect.
    Da quel che ho visto le cause possibili sono 2 (nessuna delle quali dipende dal tuo client):

    1) (più probabile) Stai accedendo al WebService usando una URL su HTTPS, ma il server redirige la response su HTTP (o viceversa!): in questo caso, il server dovrebbe essere configurato per accettare le connessioni per il webservice su HTTP (o sputare tutto fuori su HTTPS).

    2) (meno probabile) Il WebService richiede un'autenticazione anche per quel metodo e sta cercando di redirigerti verso la pagina di login (sarebbe assurdo).

    Un primo tentativo: proverei a far comunicare tutto su HTTP (o HTTPS se stai già comunicando su HTTP).


    Ciao.
    Ultima modifica di LeleFT; 01-03-2019 a 18:58
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Framek
    Registrato dal
    Apr 2010
    Messaggi
    22
    Ciao Lele.. effettivamente il primo punto è quello che pensavo anche io... tuttavia, se utilizzo SoapUI ed inserisco la WDSL con le credenziali come mi han dato, riesco ad accedere al web service quindi vi viene da pensare o che SoapUI riesca a gestire il redirect oppure che le classi in java (quelle autogenerate), abbiano qualcosa di non conforme... stavo ora pensando sia di cheidere che tutto il traffico sia su http o su https o, di farmi creare un webserice REST.. con netbeans, come posso creare un client (per le medesime necessità) che possa collegarsi al REST, mi dicono che REST sia meno problematico.
    Grazie
    L'importante è non smettere di interrogarsi. La curiosità ha una precisa raggione per l'esistenza!

  6. #6
    Utente di HTML.it L'avatar di Framek
    Registrato dal
    Apr 2010
    Messaggi
    22
    Buongiorno, se a qualcuno potesse servire, ho finalmente risolto il problema.quanto diceva Lele è difatti corretto, il response arrivava su HTTP e qundi era necessario gestire il fatto ma, era ancora più vero che NetBeans nel creare automaticamente le classi dal wsdl, tralasciava più di qualche metodo e sto ancora cercando di capire il perchè ... ho semplicemente utilizzato eclipse e creato un nuovo progetto, ho creato nello stesso un Web Service Client passandogli il wsdl, dopodicchè, il main che vedete nel primo post è praticamnte uguale e tutto funziona a meraviglia. Appena avrò capito che cosa non andava con NetBeans postero l'arcano qui... buon lavoro e grazie
    L'importante è non smettere di interrogarsi. La curiosità ha una precisa raggione per l'esistenza!

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.