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