جافا، في الهواء الطلق API خدمة الويب وNamedValues ​​يونيكود

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

سؤال

وأنا باستخدام جافا للوصول إلى الهواء الطلق خادم المحتوى عبر انها API خدمة ويب لاستيراد بعض المحتويات في ذلك. يجب أن يكون محتوى بعض الخصائص NamedValue المقرر أن 8 UTF-سلسلة (السيريلية). وأظل الحصول على استثناء محلل ساكس:

org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1b) was found in the element content of the document.

والرمز يبدو شيئا من هذا القبيل:

NamedValue[] namedValueProperties = new NamedValue[2];

namedValueProperties[0] = Utils.createNamedValue(Constants.PROP_NAME, name );
namedValueProperties[1] = Utils.createNamedValue("{my.custom.model}myProperty", cyrillicString);

CMLCreate create = new CMLCreate("1", parentReference, null, null, null, documentType, namedValueProperties);
CML cml = new CML();
cml.setCreate(new CMLCreate[]{create});
UpdateResult[] results = null;

try {
   results = WebServiceFactory.getRepositoryService().update(cml);
} catch (...)
    Here comes the "org.xml.sax.SAXParseException"
} 

لا أحد يعرف كيفية حل هذه المشكلة؟

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

المحلول

وكانت المشكلة التي مكتبة في الهواء الطلق على شبكة الانترنت على الخدمة client.jar اعتدت كانت من توزيع 2.9B (أنا ضرب 2.9B خادم المحتوى المجتمع)، ويبس الاعتماد bcprov-jdk15-136.jar وxmlsec 1.4. 0.jar لم تكن كافية (بقي من العمر من 2.1 شعبة نظم). وأرجو أن يكون استخدامها bcprov jdk15-137.jar وxmlsec-1.4.1.jar التي يتم نشرها جنبا إلى جنب مع توزيع 2.9B.

نصائح أخرى

وأسهل طريقة للحصول على من حوله هو أنني أعتقد أن يهرب cyrillicString، على سبيل المثال مع <لأ href = "http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringEscapeUtils هتمل # escapeXml (java.lang.String) "يختلط =" نوفولو noreferrer "> escapeXml من جاكرتا العموم، أو عن طريق تحويل السلسلة بأكملها إلى الكيانات XML إذا كان هذا لا يكفي. ولكن في المدى الطويل، ينبغي أن تكون ثابتة في الهواء الطلق، لذلك فتح تذكرة قد يكون خيارا جيدا للغاية.

وانه من الصعب قليلا لمعرفة ما إذا كان أو لم يكن هذا هو الخلل مع الهواء الطلق، دون أن يرى البيانات التي نحاول أن تستمر. إصدار الهواء الطلق الذي تستخدمه؟ لقد وجدت هذا خلل في نظام تتبع القضية في الهواء الطلق و. على وجه التحديد، وهذا هو الحال مع 2.1 المجتمع، ويبدو تشير إلى وجود مشاكل مع ترميز غير UTF-8، لذلك قد تكون أو لا تكون ذات صلة لمشكلتك.

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

وعلى أمل أن كان على الأقل قليلا مفيدة!

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