مع CXF (في الواقع Groovyws) ، كيف يمكنني إنشاء رأس صابون مع عقدة طفل واحد لديها عقدة نصية؟

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

سؤال

أقوم بإنشاء عميل رائع لخدمة SOAP .NET التي تتطلب رأسًا يبدو مثل هذا:

<soap:Header>
    <HeaderInfo xmlns="http://foo.bar.com/ns">
        <token>abc-unique-token</token>
    </HeaderInfo>
</soap:Header>

وجدت الأسئلة الشائعة لإضافة رؤوس إلى رسائل CXF ويجعلني هناك تقريبًا ، لكن ليس تمامًا. المثال الذي يقدمونه للخيار 4 يشبه هذا:

    List<Header> headers = new ArrayList<Header>()
    Header header = new Header(new QName("http://foo.bar.com/ns", "HeaderInfo"), 
        "abc-unique-token", new JAXBDataBinding(String.class))
    headers.add(header)

    proxy.client.getRequestContext().put(Header.HEADER_LIST, headers)

باستخدام هذا الرمز ، يمكنني الحصول عليه للقيام بذلك:

<soap:Header>
    <HeaderInfo xmlns="http://foo.bar.com/ns">
        abc-unique-token
    </HeaderInfo>
</soap:Header>

لكن عقدة "HeaderInfo" تفتقد إلى الرمز المميز للطفل "لتطويق" ABC-Unique-Token "ولست متأكدًا من كيفية الحصول عليها هناك.

هل هناك شيء بسيط يمكنني نقله إلى مُنشئ الرأس لإنشاء تلك العقدة؟

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

يحتاج الكثير من الأشياء الأخرى التي وجدتها إلى إنشاء شيء يمتد إلى فئة IncortedPhaseInterceptor مع مجموعة من التعليمات البرمجية الإضافية ، عندما يكون ما أريده قريبًا جدًا :).

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

المحلول

تمكنت من الحصول على العمل باستخدام هذا بعد معرفة أن طريقة Soapfactory في المنشور المنفصل الذي ذكرته بحاجة إلى SAAJ-IMPL.JAR للعمل:

List<Header> headers = new ArrayList<Header>()
SOAPFactory sf = SOAPFactory.newInstance()
def authElement = sf.createElement(new QName("http://foo.bar.com/ns", "HeaderInfo"))
def tokenElement = authElement.addChildElement("token")
tokenElement.addTextNode("abc-unique-token")
SoapHeader tokenHeader = new SoapHeader(
    new QName("http://foo.bar.com/ns", "HeaderInfo"), authElement);
headers.add(tokenHeader);
proxy.client.getRequestContext().put(Header.HEADER_LIST, headers)

ما زلت أشعر بالفضول (وسأقبل إجابة) حول القيام بذلك بالطريقة الموصى بها CXF وإضافة طفل إلى فئة الرأس.

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