-
Notifications
You must be signed in to change notification settings - Fork 0
SOAPService Examples
Dmytro Katashev edited this page Aug 13, 2024
·
3 revisions
This example demonstrates how to create and send a basic SOAP request using the SOAPService class.
var SOAPService = require('*/cartridge/scripts/webservice/SOAPService');
// Define a custom SOAP service
var OrderSOAPService = SOAPService.extend({
SERVICE_CONFIGURATIONS: {
default: 'order.soap.service',
},
/**
* Fetch order details using SOAP request.
*
* @param {dw.order.Order} order - The order.
* @returns {dw.svc.Result} - The SOAP service result.
*/
fetchOrderDetails: function(order) {
return this.fetch({
// Use WSDL file name here
webReference: 'OrderService',
// Without service object it will use the defaultService port
service: {
name: 'OrderService',
port: 'OrderPort'
},
// Operation is a method name which should be executed: svc.serviceClient[method]
operation: 'getOrder',
// Create a webReference request object
createRequestPayload: function(svc, webReference) {
var requestPayload = new webReference.GetOrder();
requestPayload.orderNo = order.orderNo;
return requestPayload;
}
});
}
});
// Perform the SOAP call
var result = OrderSOAPService.fetchOrderDetails(order);This example demonstrates how to take full control over the SOAP request and response handling by implementing custom execution and parsing logic.
var SOAPService = require('*/cartridge/scripts/webservice/SOAPService');
// Define a custom SOAP service
var OrderSOAPService = SOAPService.extend({
SERVICE_CONFIGURATIONS: {
default: 'order.soap.service',
},
/**
* Fetch order details using SOAP request.
*
* @param {dw.order.Order} order - The order.
* @returns {dw.svc.Result} - The SOAP service result.
*/
fetchOrderDetails: function(order) {
return this.fetch({
// Use WSDL file name here
webReference: 'OrderService',
// Without service object it will use the defaultService port
service: {
name: 'OrderService',
port: 'OrderPort'
},
// Create a webReference request object
createRequestPayload: function(svc, webReference) {
var requestPayload = new webReference.GetOrder();
requestPayload.orderNo = order.orderNo;
return requestPayload;
},
// Execution callback to control arguments
executeRequest: function(svc, requestPayload) {
return svc.serviceClient.getOrder(requestPayload.orderNo);
},
// Parsing response payload object
parseResponsePayload: function(svc, responsePayload) {
var objectWrapper = {
orderNo: responsePayload.orderNo
};
return objectWrapper;
}
});
}
});
// Perform the SOAP call
var result = OrderSOAPService.fetchOrderDetails(order);This example shows how to set up and use WS-Security for SOAP requests.
var SOAPService = require('*/cartridge/scripts/webservice/SOAPService');
// Define a custom SOAP service with WS-Security
var SecureSOAPService = SOAPService.extend({
SERVICE_CONFIGURATIONS: {
default: 'secure.soap.service',
},
/**
* Fetch secure order details using SOAP request.
*
* @param {dw.order.Order} order - The order.
* @returns {dw.svc.Result} - The SOAP service result.
*/
fetchSecureOrderDetails: function(order) {
var WSUtil = require('dw/ws/WSUtil');
var HashMap = require('dw/util/HashMap');
var requestConfigMap = new HashMap();
var responseConfigMap = new HashMap();
requestConfigMap.put(WSUtil.WS_USER, 'username');
responseCfg.put(WSUtil.WS_SIGNATURE_USER, 'myservicekey');
return this.fetch({
// Use WSDL file name here
webReference: 'OrderService',
// Without service object it will use the defaultService port
service: {
name: 'OrderService',
port: 'OrderPort'
},
securityConfig: {
requestConfigMap: requestConfigMap,
responseConfigMap: responseConfigMap
},
// Create a webReference request object
createRequestPayload: function(svc, webReference) {
var requestPayload = new webReference.GetOrder();
requestPayload.orderNo = order.orderNo;
return requestPayload;
}
});
}
});
// Perform the SOAP call
var result = SecureSOAPService.fetchSecureOrderDetails(order);This example demonstrates how to pass custom properties, such as encoding or endpoint configurations, to the SOAP client.
var SOAPService = require('*/cartridge/scripts/webservice/SOAPService');
// Define a custom SOAP service with custom properties
var CustomPropertySOAPService = SOAPService.extend({
SERVICE_CONFIGURATIONS: {
default: 'property.soap.service',
},
/**
* Fetch order details using SOAP request with custom properties.
*
* @param {dw.order.Order} order - The order.
* @returns {dw.svc.Result} - The SOAP service result.
*/
fetchOrderDetailsWithProperties: function(order) {
return this.fetch({
webReference: 'OrderService',
service: {
name: 'OrderService',
port: 'OrderPort'
},
properties: {
encoding: 'UTF-8',
endpoint: 'https://custom.endpoint.com',
session: true
},
createRequestPayload: function(svc, webReference) {
var requestPayload = new webReference.GetOrder();
requestPayload.orderNo = order.orderNo;
return requestPayload;
}
});
}
});
// Perform the SOAP call
var result = CustomPropertySOAPService.fetchOrderDetailsWithProperties(order);