Aşağıdaki kod request olarak gönderdiğiniz xml veriyi alır. Header alanı mevcut mu kontrol eder ve mevcut değilse oluşturur. UserName değişkeni ile Authenticationda gönderdiğiniz username bilgisiniz alır. Header alanına ekler ve backende bu bilgiyi gönderir.

import groovy.xml.XmlSlurper
import groovy.xml.XmlUtil
import groovy.xml.StreamingMarkupBuilder

try {
    def namespacePrefix = 'sch'
    def namespaceUri = 'http://kurum.com/ws/some-func-ws/schemas'
    def userName = request_usernameOrKey

    // XmlSlurper kullanarak XML'i parse et ve namespace'leri tanımla
    def rootNode = new XmlSlurper(false, true).parseText(requestBodyTextFromClient).declareNamespace(
        'soapenv': 'http://schemas.xmlsoap.org/soap/envelope/',
        'sch': 'http://kurum.com/ws/some-func-ws/schemas'
    )

    // Header kısmı mevcut mu kontrol et, değilse oluştur
    def headerNode = rootNode.'soapenv:Header'
    if (!headerNode) {
        headerNode = rootNode.appendNode { 'soapenv:Header' {} }
    }

    // userId öğesini oluştur ve ekle
    def userIdNode = new XmlSlurper(false, true).parseText("<${namespacePrefix}:userId xmlns:${namespacePrefix}='${namespaceUri}'>${userName}</${namespacePrefix}:userId>")
    headerNode.appendNode {
        mkp.yield userIdNode
    }

    // Güncellenmiş XML'i dize olarak serileştir
    def outputXml = XmlUtil.serialize(new StreamingMarkupBuilder().bind {
        mkp.declareNamespace('soapenv': 'http://schemas.xmlsoap.org/soap/envelope/', 'sch': 'http://kurum.com/ws/some-func-ws/schemas')
        mkp.yield rootNode
    })

    requestBodyTextToTargetAPI = outputXml
} catch (Exception e) {
    e.printStackTrace()
}
GROOVY