Как мне вызвать сервис мыла в Java?

Я хотел бы вызвать сервис мыла, который я реализовал внешне в Java.

Тем не менее, следующая ошибка будет продолжать возникать. "Сервер не распознал значение HTTP-заголовка SOAPAction"

Пожалуйста, посмотрите, что не так с моим кодом.

URL-адрес теста: " http://example.com/test.asmx?op=tt"

** что такое мыло?????

import javax.xml.soap.*;

public class SOAPClientSAAJ {

  // SAAJ - SOAP Client Testing
  public static void main (String args[]) {

   String soapEndpointUrl = "http://example.com/test.asmx" ;
     String soapAction = "http://example.com/tt" ;

    callSoapWebService (soapEndpointUrl , soapAction ) ;
  }

private static void createSoapEnvelope (SOAPMessage soapMessage) throws SOAPException {
    SOAPPart soapPart = soapMessage .getSOAPPart () ;

    // SOAP Body
    SOAPBody soapBody = envelope .getBody () ;
    SOAPElement soapBodyElem1 = soapBody .addChildElement ( "element1") ;
    soapBodyElem11 .addTextNode ( "test") ;
    SOAPElement soapBodyElem2 = soapBody .addChildElement ( "element2") ;
    soapBodyElem12 .addTextNode ( "test") ;

}

private static void callSoapWebService (String soapEndpointUrl, String soapAction ) {
    try {
        // Create SOAP Connection
        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory . newInstance() ;
        SOAPConnection soapConnection = soapConnectionFactory .createConnection () ;

        // Send SOAP Message to SOAP Server
        SOAPMessage soapResponse = soapConnection .call ( createSOAPRequest( soapAction ), soapEndpointUrl) ;

        // Print the SOAP Response
        System .out . println( "Response SOAP Message:" );
        soapResponse .writeTo ( System. out );
        System .out . println() ;

        soapConnection .close () ;
    } catch (Exception e) {
        System .err . println( "\nError occurred while sending SOAP Request to Server!\nMake sure you have the correct endpoint URL and SOAPAction!\n") ;
        e .printStackTrace () ;
    }
}

  private static SOAPMessage createSOAPRequest (String soapAction) throws Exception {
    MessageFactory messageFactory = MessageFactory .newInstance () ;
    SOAPMessage soapMessage = messageFactory .createMessage () ;

    createSoapEnvelope (soapMessage ) ;

    MimeHeaders headers = soapMessage .getMimeHeaders () ;
    headers .addHeader ( "SOAPAction", soapAction) ;

    soapMessage .saveChanges () ;

    /* Print the request message, just for debugging purposes */
    System .out . println( "Request SOAP Message:" );
    soapMessage .writeTo ( System. out );
    System .out . println( "\n" );

    return soapMessage ;
  }

}

1 ответ

WSDL не доступен? Это было бы намного проще, потому что вы можете сгенерировать клиента, используя eclipse или wsimport.

Другие вопросы по тегам