2010-11-08 50 views
1

我正在使用AXIS2框架來創建和訪問web服務。使用Axis2對我來說一切都很好。但我有一個要求,當我通過soapui訪問通過webserivce測試web服務;在requesrt.xml中它必須顯示什麼是可選參數和強制參數。在Web服務中使用輸入參數必選(使用AXIS2)

但在presen它示出象下面這樣:

    <soapenv:Body> 
         <xsd:insertsStudent> 
         <!--Optional:--> 
           <xsd:studentId>?</xsd:employeeId> 

         <!--Optional:--> 
           <xsd:emailAddress>?</xsd:emailAddress> 
          </xsd:insertsStudent> 
        </soapenv:Body>   

在礦井上述樣品皁請求我想studentId具有強制性VALU然後如何顯示它作爲肥皂請求強制(如下面)

    <soapenv:Body> 
         <xsd:insertsStudent> 
         <!--compulsory:--> 
           <xsd:studentId>?</xsd:employeeId> 

         <!--Optional:--> 
           <xsd:emailAddress>?</xsd:emailAddress> 
          </xsd:insertsStudent> 
        </soapenv:Body>  

回答

1

在由soapUI創建的請求/響應示例中,您會在WSDL文件的相應XSD類型定義中聲明爲可選的每個字段上方獲得<!--Optional:-->註釋。如果一個元素是強制性的,soapUI在其上面不顯示任何內容

您的要求很奇怪。您必須在WSDL中強制使用該元素,而不是使soapUI在明顯是可選的元素上方顯示註釋。

您有類似這樣的東西在你的WSDL上述手段:

<xsd:element name="insertsStudent"> 
    <xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="studentId" type="xsd:string" minOccurs="0" maxOccurs="1" /> 
     <xsd:element name="emailAddress" type="xsd:string" minOccurs="0" maxOccurs="1" /> 
    </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

minOccurs="0" maxOccurs="1"意味着可選;

minOccurs="1" maxOccurs="1"表示強制性(強制性)。

如果更改minOccurs爲1 studentId你會得到一個必填字段和的soapUI將顯示此:

<soapenv:Body> 
    <xsd:insertsStudent> 
    <xsd:studentId>?</xsd:employeeId> 
    <!--Optional:--> 
    <xsd:emailAddress>?</xsd:emailAddress> 
    </xsd:insertsStudent> 
</soapenv:Body>  
+0

謝謝你的答覆。現在,當我通過設置「minOccurs = 1 maxOccurs = 1」屬性並嘗試通過SOAPUI訪問此webservice時,通過將必需值作爲null仍然使其執行正常給出任何例外。那麼,請您告訴我們這是否是預期的行爲? 在此先感謝。 – Narendra 2010-11-10 14:32:45

+0

如果修改WSDL文件,則必須重新生成Web服務的存根/骨架類。是你做的嗎?對於您不發送的每個必填字段,Axis2以「無效請求」作出響應。此外,你是如何「將強制值作爲空值傳遞」? – 2010-11-10 20:32:32

1

其實我只是做編碼的一部分。我沒有生成任何wsdl文件(Axis2自動在瀏覽器中顯示wsdl文件,當你請求web服務,如http://localhost:8080/services/testwebservice?wsdl)。

那麼你能告訴我怎樣才能改變使用axis2生成wsdl文件的行爲。