0

我有一个 Web 服务,我为它生成一个示例请求,然后替换所有 ? 最简单的情况为 0。它工作正常。然后我替换这样的值之一:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://interfaces.mypackage.foo.com">
       <soapenv:Header/>
       <soapenv:Body>
          <int:getCheckResults>
             <criteria>
               <startTm>
                 <time>${=0}</time>
               </startTm>
             </criteria>
          </int:getCheckResults>
       </soapenv:Body>
    </soapenv:Envelope>     

(我尝试这样做的原因是,最终,当接口需要长 ms 值时,我想传递这样的可读日期):

    <startTm>
      <time>${= new java.util.SimpleDateFormat("MM/dd/yyyy hh:mm z").parse("01/01/2012 04:00 GMT"}</time>
    </startTm>

它总是给我相同的答案而不是调用服务 - 这曾经可以工作,但我不确定现在有什么不同,也许它在旧版本的 SoapUI 中工作?

    <soapenv:Fault>
       <faultcode>soapenv:Server.generalException</faultcode>
       <faultstring>java.lang.NumberFormatException: For input string: "" Message being parsed:</faultstring>
    </soapenv:Fault>

帮助!!

4

2 回答 2

0

好吧,我吹掉了 SOAPUI 2.0.2 版并安装了最新的 4.5.0,现在它可以正常工作了。天知道出了什么问题。

希望这对其他人有帮助。

于 2012-06-13T15:35:30.870 回答
0

我建议您使用上下文变量和 Groovy 脚本。

在此 SOAP 请求之前运行的 Groovy 脚本中,添加类似这样的内容(我没有将您的代码放入其中,但我想您明白我的意思):

import java.text.SimpleDateFormat
Date today
String formattedDate
SimpleDateFormat formatter
Locale currentLocale
currentLocale = new Locale("en", "US")  
formatter = new SimpleDateFormat("yyyy-MM-dd", currentLocale)
today = new Date()
formattedDate = formatter.format(today)
log.info(formattedDate)
context.setProperty("formattedDate", formattedDate)

然后在 SOAP 请求中输入:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://interfaces.mypackage.foo.com">
   <soapenv:Header/>
   <soapenv:Body>
      <int:getCheckResults>
         <criteria>
           <startTm>
             <time>${formattedDate}</time>
           </startTm>
         </criteria>
      </int:getCheckResults>
   </soapenv:Body>
</soapenv:Envelope>     
于 2012-06-13T14:13:35.160 回答