提供された wsdl ファイルを使用して、サード パーティの Web サービスを使用しようとしています。WEB-INF フォルダーの下にある Spring-J2EE ベースのプロジェクトからファイルをローカルにロードします。
wsdl には複数の操作が公開されている可能性があります。したがって、呼び出すメソッドを選択できる方法が必要です。JaxbMarshaller も使用する必要があります。
同じコードスニペットを手伝ってくれる人はいますか?
助けてくれてありがとう。
提供された wsdl ファイルを使用して、サード パーティの Web サービスを使用しようとしています。WEB-INF フォルダーの下にある Spring-J2EE ベースのプロジェクトからファイルをローカルにロードします。
wsdl には複数の操作が公開されている可能性があります。したがって、呼び出すメソッドを選択できる方法が必要です。JaxbMarshaller も使用する必要があります。
同じコードスニペットを手伝ってくれる人はいますか?
助けてくれてありがとう。
一般に、WebServiceTemplate と Spring-WS は WSDL を開始点として扱いません。むしろ、スキーマ指向です。
WebServiceTemplate を使用する場合は、JaxmMarshaller をプラグインし、marshalSendAndReceiver メソッドを呼び出して、呼び出す SOAP アクションを含む SoapActionCallback を渡します。WSDL から SOAP アクション URI を取得できます。WebServiceTemplate はリクエストをマーシャリングし、指定した SOAP アクションで WSDL エンベロープにラップして、起動します。
WSDL からスタブを生成するフレームワークが必要な場合、Spring-WS は適していません。
これは、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();
}
}