0

提供された wsdl ファイルを使用して、サード パーティの Web サービスを使用しようとしています。WEB-INF フォルダーの下にある Spring-J2EE ベースのプロジェクトからファイルをローカルにロードします。

wsdl には複数の操作が公開されている可能性があります。したがって、呼び出すメソッドを選択できる方法が必要です。JaxbMarshaller も使用する必要があります。

同じコードスニペットを手伝ってくれる人はいますか?

助けてくれてありがとう。

4

2 に答える 2

1

一般に、WebServiceTemplate と Spring-WS は WSDL を開始点として扱いません。むしろ、スキーマ指向です。

WebServiceTemplate を使用する場合は、JaxmMarshaller をプラグインし、marshalSendAndReceiver メソッドを呼び出して、呼び出す SOAP アクションを含む SoapActionCallback を渡します。WSDL から SOAP アクション URI を取得できます。WebServiceTemplate はリクエストをマーシャリングし、指定した SOAP アクションで WSDL エンベロープにラップして、起動します。

WSDL からスタブを生成するフレームワークが必要な場合、Spring-WS は適していません。

于 2009-06-20T08:36:59.570 に答える
0

これは、Web サービスを呼び出すための簡単な方法です。詳細はこちら

public void createSoapActionCallBack(ValidateCardRequest validateCardRequest) {

        //This is used to send header message
        SoapActionCallback actionCallBack=new SoapActionCallback(soapAction);
        try{

            actionCallBack = new SoapActionCallback(SOAPACTION_DEFAULT_URL) {
            public void doWithMessage(WebServiceMessage msg) {
                    SoapMessage smsg = (SoapMessage)msg;                
                    SoapHeader soapHeader = smsg.getSoapHeader();

                    try{
                        //To send header message
                        StringSource headerSource = new StringSource("<UserCredentials xmlns='URL'>\n" +
                                        "<userid>"+"ABCD"+"</userid>\n" +
                                        "<password>"+"ABCD"+"</password>\n" +
                                        "</UserCredentials>");
                        Transformer transformer = TransformerFactory.newInstance().newTransformer();
                        transformer.transform(headerSource, soapHeader.getResult());

                        smsg.setSoapAction(soapAction);
                    }catch(Exception e)
                    {
                        e.printStackTrace();
                    }
                }
                }; 
               validateCardResponse = (FVValidateCardResponse) webServiceTemplate.marshalSendAndReceive(URL, validateCardRequest, actionCallBack);  

            } catch (Exception e) {
                e.printStackTrace();
            }       
}
于 2014-12-17T07:09:26.587 に答える