[java] لماذا لا .NET إزالة تسلسل صفيف البدائي من خدمة ويب؟



Answers

وإليك نسخة أو أكثر من نسخة تم لصقها من مشاركة مدونة كتبت عن الموضوع.

ملخص تنفيذي: يمكنك إما تغيير الطريقة .NET إزالة تسلسل مجموعة النتائج (راجع الحل كريس أعلاه)، أو يمكنك إعادة تكوين محور لتسلسل نتائجها بطريقة متوافقة مع تطبيق سواب .NET.

إذا ذهبت إلى الطريق الأخير، وهنا كيف:

... تظهر الطبقات التي تم إنشاؤها وتظهر لتعمل بشكل طبيعي، ولكن إذا كنت سوف ننظر في صفيف ديسيرياليزد على الجانب العميل (.NET / وف) ستجد أن المصفوفة تم ديسيرياليزد بشكل غير صحيح، وجميع القيم في صفيف هي 0. سيكون لديك للنظر يدويا في استجابة سواب عاد من قبل محور لمعرفة ما هو الخطأ. إليك رد على عينة (مرة أخرى، تم تعديلها من أجل الوضوح):

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/>
    <soapenv:Body>
        <doSomethingResponse>
          <doSomethingReturn>
            <doSomethingReturn href="#id0"/>
            <doSomethingReturn href="#id1"/>
            <doSomethingReturn href="#id2"/>
            <doSomethingReturn href="#id3"/>
            <doSomethingReturn href="#id4"/>
          </doSomethingReturn>
        </doSomethingResponse>
        <multiRef id="id4">5</multiRef>
        <multiRef id="id3">4</multiRef>
        <multiRef id="id2">3</multiRef>
        <multiRef id="id1">2</multiRef>
        <multiRef id="id0">1</multiRef>
   </soapenv:Body>
</soapenv:Envelope>

ستلاحظ أن أكسيس لا يولد القيم مباشرة في العنصر الذي تم إرجاعه، ولكنه بدلا من ذلك يشير إلى عناصر خارجية للقيم. هذا قد يكون منطقيا عندما يكون هناك العديد من الإشارات إلى عدد قليل نسبيا من القيم المنفصلة، ​​ولكن أيا كان الحال لم يتم التعامل معها بشكل صحيح من قبل وف باسهتبيندينغ مزود (ويقال من قبل غسواب والمراجع ويب .NET الكلاسيكية كذلك).

استغرق الأمر بعض الوقت لإيجاد حل: قم بتحرير ملف سيرفر-config.wsdd الخاص بنشر المحور والعثور على المعلمة التالية:

<parameter name="sendMultiRefs" value="true"/>

تغييره إلى كاذبة، ثم إعادة نشر عبر سطر الأوامر، والتي تبدو (تحت ويندوز) شيء من هذا القبيل:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient server-config.wsdl 

يجب الآن إزالة استجابة خدمة الويب من قبل عميل .NET الخاص بك.

Question

مساعدة! لدي خدمة ويب المحور التي يجري استهلاكها من قبل تطبيق C #. كل شيء يعمل عظيم، إلا أن المصفوفات من القيم الطويلة تأتي دائما عبر [0،0،0،0] - طول الحق، ولكن القيم ليست ديسيرياليزد. لقد حاولت مع الأوليات الأخرى (إنتس، الزوجي) ونفس الشيء يحدث. ماذا أفعل؟ أنا لا أريد تغيير دلالات خدمتي.




Links