2017-10-20 10 views
1

私はJavaで外部実装したSOAPサービスを呼びたいと思います。Javaでsoapサービスを呼び出すにはどうすればよいですか?

ただし、次のエラーは引き続き発生します。 'サーバーはHTTPヘッダーSOAPActionの値を認識しませんでした'

私のコードに間違いがないかどうかを確認してください。

テストのURLは、SOAPアクションが何であるかを** '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 ; 
    } 

} 

答えて

0

何のWSDLはありますか? eclipseまたはwsimportを使用してクライアントを生成できるので、はるかに簡単です。

関連する問題