Использование веб-служб в Ruby, которые используют зарезервированные слова в качестве имен полей - PullRequest
2 голосов
/ 26 октября 2010

Я пытаюсь использовать WebService, где один из сложных типов в WSDL имеет имя поля, которое использует зарезервированное слово Ruby.Когда я вызываю метод, возвращающий один из этих сложных типов, и пытаюсь получить доступ к данным, я получаю сообщение об ошибке.

Как я могу использовать этот веб-сервис, который использует зарезервированное слово в Ruby?

Соответствующий раздел 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

Я использую ruby ​​1.8.7-p302.

1 Ответ

1 голос
/ 27 октября 2010

Возможно, вы ищете что-то вроде BlankState для метода .Идея состоит в том, что вы создаете инкапсулирующий класс для ваших данных, который определяет некоторые методы, которые сталкиваются с плохо именованными типами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...