Как мне вызвать сервис мыла в 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.