2010-10-26 48 views
2

我正在嘗試使用WebService,其中WSDL中的某個複雜類型具有使用Ruby保留字的字段名稱。當我調用返回這些複雜類型之一併嘗試訪問數據的方法時,出現錯誤。在Ruby中使用保留字作爲字段名稱的Web服務

如何使用這個在Ruby中使用保留字的Web服務?

的WSDL的相關部分是:

<s:complexType name="someObject"> 
    <s:sequence> 
    <s:element minOccurs="0" name="field1" type="s:string"/> 
    <s:element minOccurs="0" name="field2" type="s:boolean"/> 
    <s:element minOccurs="0" name="field3" type="s:string"/> 
    <s:element minOccurs="0" name="class" type="s:string"/> 
    <s:element minOccurs="0" name="field4" type="s:string"/> 
    </s:sequence> 
    <s:attribute form="unqualified" name="type" type="s:string"/> 
</s:complexType> 

這裏是我的方法調用回來的XML:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soap:Body> 
    <MethodCallResponse> 
     <MethodCallResult> 
     <results> 
      <object type="someObject"> 
      <field1>Whatever</field1> 
      <field2>true</field2> 
      <field3>TCP</field3> 
      <class>CLIENT</class> 
      </object> 
     </results> 
     </MethodCallResult> 
    </MethodCallResponse> 
    </soap:Body> 
</soap:Envelope> 

錯誤:

undefined method `class_eval' for "CLIENT":String 

我使用紅寶石1.8.7-p302。

+0

我相信一個好的解決方案是溝肥皂/ wsdlDriver和使用soap4r – 2010-10-29 14:23:16

回答

1

您可能正在尋找類似BlankState method的東西。這個想法是,你爲你的數據創建一個封裝類,這些類定義了一些與名稱不匹配的類型相沖突的方法。

相關問題