Lua Requires Chilkat v11.0.0+
Lua
Peoplevox WMS Authentication
See more HTTP Examples
Provides an example of a call to the Peoplevox WMS Authenticate using SOAP 1.1.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- Sends a POST that looks like this:
-- POST /PEOPLEVOX_CLIENT_ID/resources/integrationservicev4.asmx HTTP/1.1
-- Content-Type: text/xml;charset=UTF-8
-- SOAPAction: http://www.peoplevox.net/Authenticate
-- Content-Length: (automatically computed and added by Chilkat)
-- Host: qac.peoplevox.net
--
-- <?xml version="1.0" encoding="utf-8"?>
-- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:peop="http://www.peoplevox.net/">
-- <soapenv:Header/>
-- <soapenv:Body>
-- <peop:Authenticate>
-- <peop:clientId>PEOPLEVOX_CLIENT_ID</peop:clientId>
-- <peop:username>PEOPLEVOX_USERNAME</peop:username>
-- <peop:password>PEOPLEVOX_BASE64_PASSWORD</peop:password>
-- </peop:Authenticate>
-- </soapenv:Body>
-- </soapenv:Envelope>
--
local sbSoapXml = chilkat.StringBuilder.new()
sbSoapXml:append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
sbSoapXml:append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:peop=\"http://www.peoplevox.net/\">")
sbSoapXml:append(" <soapenv:Header/>")
sbSoapXml:append(" <soapenv:Body>")
sbSoapXml:append(" <peop:Authenticate>")
sbSoapXml:append(" <peop:clientId>PEOPLEVOX_CLIENT_ID</peop:clientId>")
sbSoapXml:append(" <peop:username>PEOPLEVOX_USERNAME</peop:username>")
sbSoapXml:append(" <peop:password>PEOPLEVOX_BASE64_PASSWORD</peop:password>")
sbSoapXml:append(" </peop:Authenticate>")
sbSoapXml:append(" </soapenv:Body>")
sbSoapXml:append("</soapenv:Envelope>")
-- Base64 encode the password and update the SOAP XML.
local crypt = chilkat.Crypt2.new()
local passwordBase64 = crypt:encode_string("PEOPLEVOX_PASSWORD", "utf-8", "base64")
local numReplacements = sbSoapXml:replace("PEOPLEVOX_BASE64_PASSWORD", passwordBase64)
local req = chilkat.HttpRequest.new()
req.http_verb = "POST"
req.send_charset = true
req.charset = "utf-8"
req:add_header("Content-Type", "text/xml")
req:add_header("SOAPAction", "http://www.peoplevox.net/Authenticate")
req.path = "/PEOPLEVOX_CLIENT_ID/resources/integrationservicev4.asmx"
local success = req:load_body_from_string(sbSoapXml:get_as_string(), "utf-8")
local http = chilkat.Http.new()
http.follow_redirects = true
local resp = chilkat.HttpResponse.new()
success = http:http_sreq("qac.peoplevox.net", 443, true, req, resp)
if not success then
print(http.last_error_text)
return
end
-- We should expect a 200 response if successful.
if resp.status_code ~= 200 then
print("Response StatusCode = " .. resp.status_code)
print("Response StatusLine: " .. resp.status_line)
print("Response Header:")
print(resp.header)
return
end
-- A successful response returns this XML:
-- <?xml version="1.0" encoding="utf-8" ?>
-- <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-- <soap:Body>
-- <AuthenticateResponse xmlns="http://www.peoplevox.net/">
-- <AuthenticateResult>
-- <ResponseId>0</ResponseId>
-- <TotalCount>1</TotalCount>
-- <Detail>PEOPLEVOX_CLIENT_ID,7fe13431-c67f-4d52-bcfd-b60fbfa3b0ca</Detail>
-- <Statuses />
-- <ImportingQueueId>0</ImportingQueueId>
-- <SalesOrdersToDespatchIds />
-- </AuthenticateResult>
-- </AuthenticateResponse>
-- </soap:Body>
-- </soap:Envelope>
--
local xmlResponse = chilkat.Xml.new()
success = xmlResponse:load_xml(resp.body_str)
print(xmlResponse:get_xml())
-- Show how to get the Detail, which must be the ClientId,SessionId
local detail = xmlResponse:chilkat_path("soap:Body|AuthenticateResponse|AuthenticateResult|Detail|*")
print("Detail = " .. detail)