SOAP Webサービスを呼び出すときは、静的呼び出しまたは動的呼び出しを使用できます。
静的呼び出しとは、WSDLからスタブを作成し、それを使用して呼び出しを実行することを意味します。これにより、すべての「配管」コードが作成されますが、そのWebサービスに密接に関連しており、異なる契約のある他のWebサービスには使用できません。各WSDLについて、別のスタブを作成する必要があります。
動的呼び出しでは、実行時にWSDLを読み取り、WSDLから取得した情報に基づいてWebサービスを呼び出す方法を理解します。複数のWSDLを提供し、クライアントが適応します。
動的呼び出しは、SoapUIがサンプル要求と応答を生成するために使用するものです。
これは、それをフィードするWSDLを読み取り、typesセクションからXMLスキーマを抽出し、XMLインスタンスを生成します。これを行うには、フードの下にWsdl4jとXmlBeansを使用します。
Wsdl4jを使用すると、WSDLの解析時に制御できるため、Wsdl4jを使用することをお勧めします。しかし、XmlBeansも見てみましょう。たとえば、schema to instanceクラスのように役に立つかもしれないいくつかの他のtoolsがあります。
あなたが(多分上で何が起こっているのか確認するために、それをデバッグする)アクションでそれを見るために必要がある場合はSOAPUI APIで迅速な汚いテストを作成することができます。
import com.eviware.soapui.impl.wsdl.WsdlInterface;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.support.wsdl.WsdlImporter;
public class Test {
public static void main(String[] args) throws Exception {
WsdlProject project = new WsdlProject();
WsdlInterface[] wsdls = WsdlImporter.importWsdl(project, "http://www.html2xml.nl/Services/Calculator/Version1/Calculator.asmx?wsdl");
WsdlInterface wsdl = wsdls[0];
System.out.println(wsdl.getOperationByName("Add").createRequest(true));
System.exit(0); // just to clear up some threads created by the project
}
}
あなたが(印刷されるはずですメッセージ計算機WSの操作を追加する)は、次のようになります。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:Add>
<tem:a>?</tem:a>
<tem:b>?</tem:b>
</tem:Add>
</soapenv:Body>
</soapenv:Envelope>
これは、最初のステップを超えて移動するのに役立ちます。
woa、これは5年前に尋ねられました! :o - 誰も私の前でそれを編集していない:o – Gewure