Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327

    [JAVA] Client SOAP

    Salve,
    sto realizzando un client SOAP che deve mettersi in contatto in HTTPS con un web services.
    Ho installato la libreria saaj e seguendo questo tutorial

    http://www.ibm.com/developerworks/xm...ry/x-jaxmsoap/

    sono riuscito a scrivere il codice per inviare l'xml di input al mio webservices.

    Ho iniziato a fare delle prove ma l'app se ne va in eccezione e mi restituisce questo errore

    8-apr-2011 18.13.28 com.sun.xml.internal.messaging.saaj.client.p2p.Htt pSOAPConnection post
    GRAVE: SAAJ0009: Message send failed

    così ho pensato che poteva dipendere dal protocollo HTTPS e ho seguito questo altro tutorial

    http://blog.hexican.com/2010/12/send...ps-using-saaj/

    per caricare sul keystore il certificato per accedere al webservices in https da java.
    Però continua a darmi lo stesso errore, secondo voi da cosa può dipendere?? grazie

  2. #2
    Non so' mi sembra strano che non funzioni lo stesso con l'https... sicuro che il webservice sia disponibile e di non aver sbagliato qualcosa nell'invio della richiesta e nella sintassi?
    Potresti fare una prova creando un webservice semplice così se ti da ancora errore puoi incollare qui il codice che hai usato.
    lolide
    Java Programmer

    Informati

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    al momento non ho modo di provare, ma appena posso cerco di fare delle prove su un webservice in locale e ti faccio sapere... postando anche il codice magari, se nn dovesse fungere.

    PS:
    per darti delle info in più, il web service che devo contattare è in remoto e non ho restrizioni di alcun tipo, non c'è alcun firewall che mi blocca e ho anche il certificato https.
    Con la libreria che ho utilizzato riesco perfettamente a crearmi l'xml di input che il webservice si aspetta, la SOAPAction che inserisco è corretta ma sembra che non riesce ad inviare il messaggio cmq.
    la connessione e l'invio lo faccio proprio seguendo alla lettera il link al primo tutorial che ho postato.

    a titolo informativo, mi hanno dato due certificati, uno con estensione crt e l'altro con estensione .p12 con password.
    Come devo comportarmi secondo te in java??
    quello con estensione .p12 devo caricarlo anche sul Keystore?? ma più che altro, si possono aggiungere i .p12 al Keystore??

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    allora, ho provato in locale ed effettivamente continua a darmi lo stesso errore

    ti posto il codice

    codice:
    public static void main(String[] args) {
    
    		SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
            SOAPConnection connection = soapConnFactory.createConnection();
            
            MessageFactory messageFactory = MessageFactory.newInstance();
            SOAPMessage message = messageFactory.createMessage();
            
            MimeHeaders headers = message.getMimeHeaders();
            headers.setHeader("POST", "/ServiceF4.asmx");
            headers.setHeader("Content-Type", "text/xml; charset=utf-8");
            
            SOAPPart soapPart = message.getSOAPPart();
            SOAPEnvelope envelope = soapPart.getEnvelope();
            SOAPBody body = envelope.getBody();
            
            SOAPElement bodyElement = body.addChildElement(envelope.createName("ACCESS" , "", "https://indirizzo/"));
    		
            SOAPElement bodyElement_2 = bodyElement.addChildElement("ACCESSInput").addChildElement("CommonIn");
            bodyElement_2.addChildElement("CLIENTUNIQUEIDENTIFIER").addTextNode("0");
            bodyElement_2.addChildElement("MAINUSERNAME").addTextNode("user");
            bodyElement_2.addChildElement("MAINPASSWORD").addTextNode("pass");
            bodyElement_2.addChildElement("BPSOFFICE").addTextNode("fsd");
            bodyElement_2.addChildElement("BPSOP").addTextNode("fdsfdsf");
            
            message.saveChanges();
            
            System.out.println("\nREQUEST:\n");
            message.writeTo(System.out);
            System.out.println();
            
    
            String destination = "https://indirizzo";
    
            SOAPMessage reply = connection.call(message, destination);
            SOAPMessage reply = sendMessage(message, destination);
    
    
    	    System.out.println("\nRESPONSE:\n");
    
    	    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    	    Transformer transformer = transformerFactory.newTransformer();
    
    	    Source sourceContent = reply.getSOAPPart().getContent();
    
    	    StreamResult result = new StreamResult(System.out);
    	    transformer.transform(sourceContent, result);
    	    System.out.println();
    
            connection.close();
    
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    mi dici un po' la configurazione che stai seguendo ?
    web container dove deploy il tuo web service (per test)?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    quello con estensione .p12 devo caricarlo anche sul Keystore?? ma più che altro, si possono aggiungere i .p12 al Keystore??
    Il .p12 è un keystore e quindi, ovviamente, non puoi inserirlo all'interno di un altro keystore. Tu in questo momento cosa te ne fai di questo p12? Non è che devi utilizzarlo come certificato client? ti sei informato su questo?

    Fai una prova aggiungendo queste 3 semplici istruzioni:

    codice:
    props.setProperty("javax.net.ssl.keyStore", keyStorePath); //path del p12
    props.setProperty("javax.net.ssl.keyStorePassword", keyPassword); //password del p12
    props.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); //tipo di keystore

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da Vindav
    Il .p12 è un keystore e quindi, ovviamente, non puoi inserirlo all'interno di un altro keystore. Tu in questo momento cosa te ne fai di questo p12? Non è che devi utilizzarlo come certificato client? ti sei informato su questo?

    Fai una prova aggiungendo queste 3 semplici istruzioni:

    codice:
    props.setProperty("javax.net.ssl.keyStore", keyStorePath); //path del p12
    props.setProperty("javax.net.ssl.keyStorePassword", keyPassword); //password del p12
    props.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); //tipo di keystore
    appunto, io cercavo di capire questa configurazione dove la setta lui

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    allora ho fatto altri test in locale e adesso il mio webservice risponde... per quanto riguarda il web service che devo contattare non è mio, si trova in remoto. Mi hanno dato gli xml di input che devo inviare.
    Non è che sia proprio un problema xml??
    esiste un modo per firmare i messaggi SOAP con il certificato che mi hanno dato??

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    327
    opss non avevo visto i vostri mess, provo subito con il fare quelle prove che mi avete suggerito

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    appunto, io cercavo di capire questa configurazione dove la setta lui
    sorry ho visto solo ora, quando ho postato non avevo notato il tuo intervento

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.