2014-10-10 82 views
0

我有一個註冊的存儲過程,它將兩個數字相加。SAS Web服務:對SOAP請求的錯誤響應

%let sum = %SYSEVALF(&NUM1 + &NUM2); 

data _null_; 
file _webout; 
PUT "&SUM"; 
RUN; 

所存儲的過程被註冊到傳送流,兩者都輸入變量被登記爲數值,_webout輸出參數被註冊爲一個字符串(此參數的註冊並不改變任何東西)。

沒有別的包括。

我正在使用SOAPUI基於自動生成的WSDL文件創建SOAP信封。 SOAP請求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:biw="http://www.sas.com/xml/namespace/biwebservices"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <biw:wSDL_Test> 
     <biw:parameters> 
      <!--Optional:--> 
     <biw:NUM1>1</biw:NUM1> 
     <!--Optional:--> 
     <biw:NUM2>1</biw:NUM2> 
     </biw:parameters> 
    </biw:wSDL_Test> 
    </soapenv:Body> 
</soapenv:Envelope> 

我期待着與2號的響應,但我得到這個代替:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Body> 
    <n:wSDL_TestResponse xmlns:n="http://www.sas.com/xml/namespace/biwebservices"> 
    <n:wSDL_TestResult> 
     <n:Streams> 
      <n:_WEBOUT contentType="text/html;charset=windows-1252"> 
       <n:Value>Mgo=</n:Value> 
      </n:_WEBOUT> 
     </n:Streams> 
    </n:wSDL_TestResult> 
    </n:wSDL_TestResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

值「氧化鎂=」又還給無論任何兩個數的添加。如果我調用從SAS EG或從中間層Web存儲過程應用程序轉換爲Web服務的存儲過程,我會得到所需總和的正確響應。

這是我的第一個webservice,我用它作爲其他東西的POC。我覺得它必須是非常簡單的東西,但我不確定它是什麼。任何幫助表示讚賞!

問候, 瓦西里

回答

0

它是2,它只是base64編碼。去here並在解碼框中鍵入Mgo =。

我相信SOAPUI中有一個選項可以解碼響應。我使用它已經有幾年了。

+0

謝謝,現在你說,它是如此明顯。我不知道爲什麼當我用不同的參數測試它時,我得到了相同的結果。 謝謝! – 2014-10-12 11:57:40

+0

檢查以確保您未在​​代碼中設置宏變量。我知道過去犯了這個錯誤! – DomPazz 2014-10-13 15:01:13

+0

我在存儲過程中註冊了兩個輸入。 _webout是一個自動變量,所以我沒問題。謝謝。 – 2014-10-14 06:10:58