2016-03-22 17 views
0

複雑なWSDL(複合型)のすべての入力要求パラメータと出力要求パラメータを次のように取得する方法がありますか? SOAPリクエストを生成することはできますが、パラメータのタイプを取得することはできません。誰でも助けてくれますか?入力パラメータ複雑なWSDLの名前と型式

import java.io.IOException; 
import java.util.Map; 
import org.apache.xmlbeans.XmlException; 
import com.eviware.soapui.impl.WsdlInterfaceFactory; 
import com.eviware.soapui.impl.wsdl.WsdlInterface; 
import com.eviware.soapui.impl.wsdl.WsdlOperation; 
import com.eviware.soapui.impl.wsdl.WsdlProject; 
import com.eviware.soapui.impl.wsdl.WsdlRequest; 
import com.eviware.soapui.model.iface.Operation; 
import com.eviware.soapui.model.iface.Request.SubmitException; 
import com.eviware.soapui.support.SoapUIException; 

public class TestWsdl { 

    public static void main(String[] args) throws XmlException, IOException, SoapUIException, SubmitException { 
     try { 
      String wsdl = "https://secure.echosign.com/services/EchoSignDocumentService19?wsdl"; 

      WsdlProject project = new WsdlProject(); 
      WsdlInterface iface = WsdlInterfaceFactory.importWsdl(project, wsdl, true)[0]; 

      Map<String, Operation> m = iface.getOperations(); 

      for (Map.Entry<?, ?> entry : m.entrySet()) { 
       WsdlOperation operation = (WsdlOperation) entry.getValue(); 
       WsdlRequest request = operation.addNewRequest("My request"); 
       request.setTimeout("2000"); 
       String requestContent = operation.createRequest(true); 
       request.setRequestContent(requestContent); 
       if("createUser".equalsIgnoreCase(operation.getBindingOperationName())){ 
        System.out.println("REQUEST: " + requestContent +"\n\n"); 
       } 
      } 
      System.exit(0); 
     } catch (Exception ex) {     
     } 
    } 

} 

SOAP応答:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:api="http://api.echosign" xmlns:dto="http://dto.api.echosign"> 
     <soapenv:Header/> 
     <soapenv:Body> 
      <api:createUser> 
      <api:apiKey>?</api:apiKey> 
      <api:userInfo> 
       <!--Optional:--> 
       <dto:company>?</dto:company> 
       <!--Optional:--> 
       <dto:customField1>?</dto:customField1> 
       <!--Optional:--> 
       <dto:customField2>?</dto:customField2> 
       <!--Optional:--> 
       <dto:customField3>?</dto:customField3> 
       <!--Optional:--> 
       <dto:email>?</dto:email> 
       <!--Optional:--> 
       <dto:firstName>?</dto:firstName> 
       <!--Optional:--> 
       <dto:groupKey>?</dto:groupKey> 
       <!--Optional:--> 
       <dto:lastName>?</dto:lastName> 
       <!--Optional:--> 
       <dto:optIn>?</dto:optIn> 
       <!--Optional:--> 
       <dto:password>?</dto:password> 
       <!--Optional:--> 
       <dto:phone>?</dto:phone> 
       <!--Optional:--> 
       <dto:title>?</dto:title> 
      </api:userInfo> 
      </api:createUser> 
     </soapenv:Body> 
    </soapenv:Envelope> 

答えて

0

私はwsdlは、外部のXMLスキーマにインラインxml schemaまたは参照のいずれかを含むべきであると信じています。

jaxb,xmlbeansなどを使用して、同じxmlスキーマのJavaクラスを作成できます。

次に、データ型でリクエストを作成するのは簡単です。

もちろん、上記のリクエストはリクエストタイプのオブジェクト形式で、ソープヘッダーが追加されると文字列にシリアル化します。

これが役に立ちます。

+0

私はJavaクラスを作成せずにオンザフライのソリューションを探しています。私はSOAPUIと同様の製品を作ることができれば完璧です。 –

関連する問題