سؤال

أنا أحاول أن تستهلك خدمة ويب SharePoint من كولد فيوجن عبر cfinvoke (لأنني لا أريد أن أتعامل مع (قراءة:تحليل) الصابون رد نفسه).

الصابون ويشمل رد بايت-النظام-علامة الحرف (BOM), التي تنتج الاستثناء التالي في CF:

"Cannot perform web service invocation GetList.
The fault returned when invoking the web service operation is:
'AxisFault
faultCode: {http://www.w3.org/2003/05/soap-envelope}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Content is not allowed in prolog."

معيار ترميز UTF-8 اختياريا يشمل بوم حرف (http://unicode.org/faq/utf_bom.html#29).مايكروسوفت عالميا تقريبا يشمل بوم شخصية مع UTF-8 ترميز الجداول .من ما أستطيع أن أقول ليس هناك طريقة لتغيير ذلك في IIS.محلل XML التي JRun (كولد فيوجن) يستخدم بشكل افتراضي لا التعامل مع بوم حرف UTF-8 ترميز XML تيارات.لذا يبدو أن الطريق لإصلاح هذا هو تغيير محلل XML المستخدمة من قبل JRun (http://www.bpurcell.org/blog/index.cfm?mode=entry&entry=942).

أدوبي يقول أنه لا التعامل مع بوم حرف (انظر التعليقات من anoynomous و قاعة في 2 و 5).
http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_g-h_09.html#comments

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

المحلول

انا ذاهب الى القول أن الإجابة على السؤال (هل هذا ممكن؟) هو لا.أنا لا أعرف ذلك نهائيا ، ولكن الملصق الذي علق فوق قاعة (في التعليقات على هذه الصفحة) أعطى العمل-حول المشكلة لذا أفترض أنه من الممكن التعامل مع عند تحليل يدويا.

أنت تقول أنك تستخدم CFInvoke لأنك لا تريد أن تتعامل مع الصابون استجابة نفسك.يبدو أنك لم يكن لديك أي خيار.

نصائح أخرى

كما آدم توتل قال بالفعل الحل هو على الصفحة التي كنت مرتبطة

<!--- Remove BOM from the start of the string, if it exists --->
<cfif Left(responseText, 1) EQ chr(65279)>
<cfset responseText = mid(xmlText, 2, len(responseText))>
</cfif>

يبدو كولد فيوجن هو استخدام Apache محور تحت الأغطية.

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

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

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