我想调用我在Java外部实现的soap服务。
但是,将继续发生以下错误。 '服务器无法识别HTTP Header SOAPAction的值
请查看我的代码有什么问题。
测试网址为“http://example.com/test.asmx?op=tt”
**什么是soapaction ?????
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 ;
}
}
答案 0 :(得分:0)
没有可用的WSDL吗?这会更容易,因为您可以使用eclipse或wsimport生成客户端。