In this case I am looking to get a value placed in the header by a Vordel security gateway called the X-Correlation-ID. Each API call is assigned a unique X-Correlation-ID.
I confirmed with the API developers that they are returning raw xml.
Here are a couple examples of API calls in a couple of our applications:
Example 1
Note, in this example the response happens to contain an element named header, but it is not the HTTP header.
Code: Select all
<data name="request" src="https://plumvoicepp.blackhawk-net.com:464/bhnumsxml" method="raw" enctype="application/xml" rawexpr="rawxml" />
<block>
<log label="response_code"> Response Code Initial Request: <value expr="response_code" /> </log>
<!-- <log expr="'*****headers lowercase ' +getValueFirstLevelSafe(request, 'headers')"/>
<log expr="'*****headers lowercase ' +getValueFirstLevelSafe(request, 'X-Correlation-ID')"/>
<log expr="'*****headers lowercase ' +getValueFirstLevelSafe(request, 'X-Correlation Id')"/>
<log expr="'*****headers lowercase ' +getValueFirstLevelSafe(request, 'X-Correlation-id')"/>
<log expr="'*****headers lowercase ' +getValueFirstLevelSafe(request, 'X-Correlation-id')"/>
<log expr="'*****headers lowercase ' +getValueFirstLevelSafe(request, 'X-correlation-id')"/> -->
<log expr="'*****'"/>
<log expr="'*****'"/>
<log expr="'*****'"/>
<log expr="'*****'"/>
<log expr="'*****Document Element = Response' +request.documentElement.toString()"/>
<log expr="'*****Document Element = Response Atrribute 0 : ' +request.documentElement.attributes.item(0).toString()"/>
<log expr="'*****Document Element = Response Atrribute 1 : ' +request.documentElement.attributes.item(1).toString()"/>
<log expr="'*****Document Element = Response Atrribute 2 : ' +request.documentElement.attributes.item(2).toString()"/>
<log expr="'*****Document Element = Response Atrribute 3 : ' +request.documentElement.attributes.item(3).toString()"/>
<log expr="'*****'"/>
<log expr="'*****document element response first child = header : ' +request.documentElement.firstChild.toString()"/>
<log expr="'*****'"/>
<log expr="'*****document element response first child header 1st child = : ' +request.documentElement.firstChild.childNodes.item(0).toString()"/>
<log expr="'*****document element response first child header 1st child child = : ' +request.documentElement.firstChild.childNodes.item(0).firstChild.toString()"/>
<log expr="'*****'"/>
<log expr="'*****document element response first child header 2nd child = : ' +request.documentElement.firstChild.childNodes.item(1).toString()"/>
<log expr="'*****document element response first child header 2nd child child = : ' +request.documentElement.firstChild.childNodes.item(1).firstChild.toString()"/>
<log expr="'*****'"/>
<log expr="'*****document element response first child header 3rd child = : ' +request.documentElement.firstChild.childNodes.item(2).toString()"/>
<log expr="'*****document element response first child header 3rd child child = : ' +request.documentElement.firstChild.childNodes.item(2).firstChild.toString()"/>
<log expr="'*****'"/>
<log expr="'*****document element response second child message = : ' +request.documentElement.firstChild.nextSibling.toString()"/>
...
<log expr="'***** Header ' +request.documentElement.getElementsByTagName('Header').item(0).firstChild.toString()"/>
</block>
For this API call I see in the log:
Response Code Initial Request: 00
LOCAL: *****
LOCAL: *****
LOCAL: *****
LOCAL: *****
LOCAL: *****Document Element = Responsebhnums:response
LOCAL: *****Document Element = Response Atrribute 0 :
http://www.blackhawknetwork.com/bhnums
LOCAL: *****Document Element = Response Atrribute 1 :
http://www.w3.org/2001/XMLSchema-instance
LOCAL: *****Document Element = Response Atrribute 2 :
http://www.blackhawknetwork.com/bhnums
LOCAL: *****Document Element = Response Atrribute 3 :
http://www.blackhawknetwork.com/bhnums transaction.xsd
LOCAL: *****
LOCAL: *****document element response first child = header : header
LOCAL: *****
LOCAL: *****document element response first child header 1st child = : h1
LOCAL: *****document element response first child header 1st child child = : 01
LOCAL: *****
LOCAL: *****document element response first child header 2nd child = : h2
LOCAL: *****document element response first child header 2nd child child = : 02
LOCAL: *****
LOCAL: *****document element response first child header 3rd child = : h3
LOCAL: *****document element response first child header 3rd child child = : 00
LOCAL: *****
LOCAL: *****document element response second child message = : message
...
TypeError: request.documentElement.getElementsByTagName("Header").item(0) has no properties line 1
Example 2
Code: Select all
<data name="cardStatusResponse"
srcexpr="'https://plumvoicepp.blackhawk-net.com:464/services/cardmanagementservices/v3/card/status'"
namelist="card.number card.expiration channel.id" />
<log expr="'*****cardStatusResponse Document Element :' +cardStatusResponse.documentElement.toString()"/>
<log expr="'*****'"/>
<log expr="'*****cardStatusResponse document element response first child : ' +cardStatusResponse.documentElement.firstChild.toString()"/>
<log expr="'*****cardStatusResponse document element statusinfo child node 0 : ' +cardStatusResponse.documentElement.firstChild.childNodes.item(0).toString()"/>
<log expr="'*****cardStatusResponse document element status child node 0 : ' +cardStatusResponse.documentElement.firstChild.childNodes.item(0).childNodes.item(0).toString()"/>
<log expr="'*****cardStatusResponse document element status child node 1 : ' +cardStatusResponse.documentElement.firstChild.childNodes.item(0).childNodes.item(1).toString()"/>
<log expr="'*****'"/>
....
<log expr="'***** Header ' +cardStatusResponse.documentElement.getElementsByTagName('Header').item(0).firstChild.toString()"/>
For this API call I see in the log:
OCAL: *****cardStatusResponse Document Element :response
LOCAL: *****
LOCAL: *****cardStatusResponse document element response first child : statusinfo
LOCAL: *****cardStatusResponse document element statusinfo child node 0 : status
LOCAL: *****cardStatusResponse document element status child node 0 : code
LOCAL: *****cardStatusResponse document element status child node 1 : description
....
TypeError: cardStatusResponse.documentElement.getElementsByTagName("Header").item(0) has no properties line 1