如何在SoapUI工具中的SOAP请求中指定复杂数据类型输入

时间:2011-11-17 11:15:58

标签: java xml web-services xml-serialization soapui

我需要一些使用SoapUI工具的帮助。

我正在使用此工具测试webServices API。

有一个名为“getUsageReport()”的API,需要2个输入参数

    类型 <datasources>
  • <akaaurdt:ArrayOfString> 类型 <start date>
  • <xsd:string>

<akaaurdt:ArrayOfString> 定义如下。

<complexType name="ArrayOfString">
  <complexContent>
  <restriction base="soapenc:Array">
  <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]" /> 
  </restriction>
  </complexContent>
</complexType>

soap UI中的请求xml如下所示

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bil="https://control.akamai.com/BillingReports.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <soapenv:Header/>
   <soapenv:Body>
      <bil:getUsageReport soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <datasources xsi:type="bil:ArrayOfString" soapenc:arrayType="xsd:string[]"/>
         <startDate xsi:type="xsd:string">?</startDate>
      </bil:getUsageReport>
   </soapenv:Body>
</soapenv:Envelope>

当我通过在请求中提供日期来点击RUN时,这是响应

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server.generalException</faultcode>
         <faultstring>akaaurdt:ApplicationError:ApplicationError:(?? No Data for Given Start Date.  Please resubmit with a more recent date)</faultstring>
         <detail>
            <ns1:exceptionName xmlns:ns1="http://xml.apache.org/axis/">com.akamai.aws.util.AWSFault</ns1:exceptionName>
            <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">qa-portal-ws01.qaextranet.akamai.com</ns2:hostname>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

如何在此请求xml中指定<datasources>参数以获得所需的响应?

请帮我解决这个问题

-Kiran

3 个答案:

答案 0 :(得分:2)

  1. 运行BillingReports的getReports(或getReportingGroups)。让我们说它返回一个名为55555的contractCode。
  2. 运行方法getUsageReport,它应如下所示:
  3. <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bil="https://control.akamai.com/BillingReports.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
       <soapenv:Header/>
       <soapenv:Body>
          <bil:getUsageReport soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
             <datasources xsi:type="bil:ArrayOfString" soapenc:arrayType="xsd:string[]">
            <datasource xsi:type="xsd:string">55555</datasource>
        </datasources>
             <startDate xsi:type="xsd:string">20120620</startDate>
          </bil:getUsageReport>
       </soapenv:Body>
    </soapenv:Envelope>
    

答案 1 :(得分:1)

你应该指定日期

<startDate xsi:type="xsd:string">?</startDate>

它在请求中是必需的,日期格式我不知道它是如何定义的,因为它是字符串类型,而不是日期类型。

尝试yyyy/MM/dd,是日期格式类型。

答案 2 :(得分:0)

您永远不想提交请求吗?占位符。编辑请求,以便有实际数据。