سؤال

في wsdl لدي نوعان، نفس الاسم، وحالات مختلفة:استجابة تسجيل الدخول واستجابة تسجيل الدخول.

إذا استخدمت XFIRE لإنشاء فئات Java ، فإنه لا ينشئ سوى فئة واحدة ، تسجيل الدخول ، وتجاهل DOGINResponse.

كيف يمكنني الحصول على حول هذا؟

<s:element name="LoginResponse">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="LoginResult" type="tns:LOGINRESPONSE" />
      </s:sequence>
    </s:complexType>
  </s:element>

  <s:complexType name="LOGINRESPONSE">
    <s:attribute name="Message" type="s:string" />
    <s:attribute name="Token" type="s:string" />
    <s:attribute name="DataFormat" type="s:string" />
    <s:attribute name="Header" type="s:boolean" use="required" />
    <s:attribute name="Suffix" type="s:boolean" use="required" />
  </s:complexType>
هل كانت مفيدة؟

المحلول

الأسماء المعلنة في WSDL حساسة لحالة الأحرف، وهي كذلك بالفعل قانوني لاستخدام الأسماء التي تختلف فقط في حالتهم.ومع ذلك، يجب أن تكون فكرة سيئة:

  • بالتأكيد، إنها فكرة سيئة من وجهة نظر سهولة القراءة.(أعني، إذا كنت تكتب برنامج Java فلن تعلن عن المتغيرات acat و aCat في نفس مساحة الاسم.هل بامكانك؟)

  • على الرغم من أن WSDL حساس لحالة الأحرف، فإن روابط لغة البرمجة ستحتاج إلى تعيين أسماء WSDL لمعرفات البرامج غير الحساسة لحالة الأحرف (على سبيل المثال.في Visual Basic على ما أعتقد)، أو قد يقومون بتشويهها بحيث تتوافق المعرفات التي تم إنشاؤها مع اصطلاحات أسلوب لغة البرمجة.في كلتا الحالتين، أسماء WSDL التي تختلف فقط في حالة الأحرف يمكن أن تؤدي إلى مشاكل.

IMO أفضل حل على المدى الطويل لمشكلتك هو تغيير WSDL بحيث لا يكون لديك عناصر وأنواع وما إلى ذلك تختلف أسماؤها حسب الحالة فقط.

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