القضبان - باستخدام تطبيق آخر الصابون واجهة

StackOverflow https://stackoverflow.com/questions/2146669

  •  23-09-2019
  •  | 
  •  

سؤال

لدي محض ، العمل ، القضبان التطبيق.

أنا الآن في حاجة إلى بدء التواصل مع تطبيق آخر (اصبح).هذا التطبيق يعرض هذا يعرض الصابون واجهة, لذا فمن المنطقي أن محاولة استخدام الأمر (واجهة سطر الأوامر غير مكتملة).

الخطوات التي يجب علي اتباعها ؟

ما الأحجار الكريمة/الإضافات التي يجب استخدامها ؟

هل لديها عمل دروس / الأمثلة ؟

أنا أكثر أو أقل دراية العامة الصابون المفاهيم ، ولكن أنا لم تستخدم الصابون قبل ذلك.أنا أفهم بقية.

هل كانت مفيدة؟

المحلول

تحرير:هذا هو عفا عليها الزمن الإجابة التي يرجع تاريخها من القضبان 2.x.لمزيد من الحاضر الجواب ، أنصحك لمشاهدة railscast #290 .سأغادر هذا الجواب هنا في حالة شخص لا يزال باستخدام القضبان 2.x لسبب ما, و لا يمكن تطبيق ما رايان بيتس يقول هناك.

لقد تقاتل مع هذا لعدة أيام الآن وأعتقد أنني وجدت الحل بنفسي.

أبسط الأكثر نشاطا الأحجار الكريمة التي يمكن أن تجد الصابون التفاعل ويسمى سافون.

يفترض أن تعمل مع روبي نفسها.إليك جولة سريعة على كيفية استخدامه مع القضبان:

تثبيت الأحجار الكريمة.أسهل طريقة تعديل ملف config/البيئة إضافة

config.gem "savon"

ثم قم بتشغيل

rake gems:install

هذا يجب تثبيت سافون جنبا إلى جنب مع اثنين أكثر من الأحجار الكريمة.

بجانب إنشاء فئة على الخاص app/models/ الدليل (لا يجب أن تكون مجموعة فرعية من ActiveRecord فقط على الدرجة العادية على نماذج الدليل)

إذا كنت تحبني, سوف تحتاج إلى البقاء بعيدا عن XML ممكن.يمكنك القيام بذلك عن طريق إنشاء فئة مثل هذا واحد:

class MyWebservice

  WSDL = "http://www.theWebSiteWithAService.com/wsdl"

  def self.client
    @@client ||= Savon::Client.new(WSDL)
  end

  def self.soap_actions
    return client.wsdl.soap_actions
  end

  def self.invoke(action, parameters)
    response = client.send(action) { |soap| soap.body = parameters }
    return response.to_hash
  end

end

سوف تكون في الغالب استخدامه من أجل استدعاء أساليب.هذا النوع من الأساليب سوف تكون قادرة على استدعاء يعتمد على خدمات "موقع آخر" تقدم.دعونا نتصور أن 3 هي الإجراءات المتاحة - :create_monkey, :destroy_monkey & :list_monkeys.يمكنك التأكد من أن قائمة هو الصحيح من خلال ذلك على القضبان وحدة التحكم:

MyWebservice.soap_actions
=> [:create_monkey, :destroy_monkey, :list_monkeys]

الآن تخيل أن كنت تريد أن تحتج :create_monkey.أولا عليك أن تعرف المعلمات التي هي بحاجة لتلك الدعوة.أفضل مكان للبحث في هذا هو ملف wsdl نفسها.يجب أن نرى شيئا مثل هذا:

<message name="create_monkey_request">
  <part name="name" type="xsd:string"/>
  <part name="hair_color" type="xsd:string"/>
</message>
<message name="create_monkey_response">
  <part name="status" type="xsd:string"/>
</message>

لذلك يأخذ المعلمتين: name و hair_color.على روبي وحدة التحكم, يمكنك استدعاء مثل هذا:

MyWebService.invoke :create_monkey, {:name => 'frank', :hair_color => 'red' }
=> {:status => 'ok'}

سوف تحصل على تجزئة استجابة.في هذه الحالة حصلت على 'موافق' الوضع, ولكن يمكن أن يكون أكثر تعقيدا بكثير.

في وقت لاحق, يمكنك إنشاء (على سبيل المثال) ، tableless نموذج دعا Monkey, وتحديد أساليب مثل new, create, الخ التي تستخدم خدمة ويب.

أنا تاركة الكثير من الأمور المثيرة للاهتمام مثل الأمن.ولكن هذا يجب أن تبدأ إذا كان لديك نفس المشكلة لدي.

التحيات!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top