Как я могу извлечь / разобрать из этого SOAP-конверта, используя Ruby? - PullRequest
1 голос
/ 11 августа 2010

Я использую самоцвет, который использует soap / wsdlDriver.

Когда я публикую сообщение, я получаю ответ SOAP и не могу его легко проанализировать.

Это ответ, который я получаю:

#<SOAP::Mapping::Object:0x159e95faf098 {}id="27b907f8-da51-f611-ab02-4c5f88a8ec8
8" {}error=#<SOAP::Mapping::Object:0x159e95fae33c {}number="0" {}name="No Error"
 {}description="No Error">>

Мне нужно получить полное значение в id = "xxxx"

Это то, что нужно получить на героку (примечание: он работает локально). Это происходит из-за тестирования различных вариантов response.id (где response.inspect - это то, что создало вывод выше)

е» {} Ошибка = #> ответ [идентификатор] /disk1/home/slugs/220752_47a08bb_10e7/mnt/app/controllers/sugarcrm_controller.rb : 77: предупреждение: идентификатор объекта будет осуждается; используйте Object # object_id nil response.id: /disk1/home/slugs/220752_47a08bb_10e7/mnt/app/controllers/sugarcrm_controller.rb : 79: предупреждение: идентификатор объекта будет осуждается; используйте Object # object_id 23891500658740 /disk1/home/slugs/220752_47a08bb_10e7/mnt/app/controllers/sugarcrm_controller.rb : 80: предупреждение: идентификатор объекта будет осуждается; используйте Object # object_id this это contact_id: 23891500658740 события:

Ответы [ 2 ]

1 голос
/ 12 августа 2010

Хорошо, я на 95% уверен, что это вывод SOAP::Mapping::Object#inspect, а не фактический ответ. И из этого класса, похоже, вы используете метод [] для извлечения атрибутов.

Так что, если я правильно читаю, то, похоже, вы захотите:

response_id = response_object['id']

Хотя каждый атрибут, которому предшествует {}, кажется довольно странным. Так что, если это действительно часть имени атрибута, вам может понадобиться:

response_id = response_object['{}id']

Но это кажется довольно странным и может указывать на то, что используемая вами библиотека SOAP неправильно анализирует ответ.

Отказ от ответственности: я никогда не использовал эту библиотеку раньше, и публиковал ее, просто просматривая документы ... Это может или не может быть очень точным в способах использования этого класса. *

0 голосов
/ 12 августа 2010

Я не знаю, как это сделать с ruby, но может быть похоже на этот код в javascript.

var t = "<SOAP message........>";
var id = t.replace(/.*id=\"(.*?)\".*/, "$1");

Детали регулярного выражения:

.*id=\"(.*?)\".*

.* = anything, 0 or N times.
(.*?) = anything, 0 or N times, stopping at first match.
$1 = first group, the content inside ().

Итак, все будет заменено идентификатором контента.

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