Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Swift 3,4,5...) Peoplevox GetReportDataDemonstrates how to export data from a Peoplevox Warehouse Management System (WMS) using a system report template.
func chilkatTest() { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. var success: Bool // 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/GetReportData // Content-Length: (automatically computed and added by Chilkat) // Host: qac.peoplevox.net // // <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:peop="http://www.peoplevox.net/"> // <soap:Header> // <peop:UserSessionCredentials> // <peop:UserId>PEOPLEVOX_USER_ID</peop:UserId> // <peop:ClientId>PEOPLEVOX_CLIENT_ID</peop:ClientId> // <peop:SessionId>PEOPLEVOX_SESSION_ID</peop:SessionId> // </peop:UserSessionCredentials> // </soap:Header> // <soap:Body> // <peop:GetReportData> // <peop:getReportRequest> // <peop:TemplateName>Item movement history</peop:TemplateName> // <peop:PageNo>1</peop:PageNo> // <peop:ItemsPerPage>20</peop:ItemsPerPage> // <peop:OrderBy>[Date timestamp]</peop:OrderBy> // <peop:Columns>[Item code],[Date timestamp],[From],[To],[Quantity],[Comments]</peop:Columns> // <peop:SearchClause>([Date timestamp] > DateTime(2016,01,01,09,00,00))</peop:SearchClause> // </peop:getReportRequest> // </peop:GetReportData> // </soap:Body> // </soap:Envelope> // // Notice that a UserId is needed here. This is different than the username required for Peoplevox authentication. // The UserId for the admin account is 1. // let sbSoapXml = CkoStringBuilder()! sbSoapXml.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n") sbSoapXml.append("<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:peop=\"http://www.peoplevox.net/\">\r\n") sbSoapXml.append(" <soap:Header>\r\n") sbSoapXml.append(" <peop:UserSessionCredentials>\r\n") sbSoapXml.append(" <peop:UserId>PEOPLEVOX_USER_ID</peop:UserId>\r\n") sbSoapXml.append(" <peop:ClientId>PEOPLEVOX_CLIENT_ID</peop:ClientId>\r\n") sbSoapXml.append(" <peop:SessionId>PEOPLEVOX_SESSION_ID</peop:SessionId>\r\n") sbSoapXml.append(" </peop:UserSessionCredentials>\r\n") sbSoapXml.append(" </soap:Header>\r\n") sbSoapXml.append(" <soap:Body>\r\n") sbSoapXml.append(" <peop:GetReportData>\r\n") sbSoapXml.append(" <peop:getReportRequest>\r\n") sbSoapXml.append(" <peop:TemplateName>Item movement history</peop:TemplateName>\r\n") sbSoapXml.append(" <peop:PageNo>1</peop:PageNo>\r\n") sbSoapXml.append(" <peop:ItemsPerPage>20</peop:ItemsPerPage>\r\n") sbSoapXml.append(" <peop:OrderBy>[Date timestamp]</peop:OrderBy>\r\n") sbSoapXml.append(" <peop:Columns>[Item code],[Date timestamp],[From],[To],[Quantity],[Comments]</peop:Columns>\r\n") sbSoapXml.append(" <peop:SearchClause>([Date timestamp] > DateTime(2016,01,01,09,00,00))</peop:SearchClause>\r\n") sbSoapXml.append(" </peop:getReportRequest>\r\n") sbSoapXml.append(" </peop:GetReportData>\r\n") sbSoapXml.append(" </soap:Body>\r\n") sbSoapXml.append("</soap:Envelope>") let req = CkoHttpRequest()! req.httpVerb = "POST" req.sendCharset = true req.charset = "utf-8" req.addHeader("Content-Type", value: "text/xml") req.addHeader("SOAPAction", value: "http://www.peoplevox.net/GetReportData") req.path = "/PEOPLEVOX_CLIENT_ID/resources/integrationservicev4.asmx" success = req.loadBody(from: sbSoapXml.getAsString(), charset: "utf-8") let http = CkoHttp()! http.followRedirects = true var resp: CkoHttpResponse? = http.synchronousRequest("qac.peoplevox.net", port: 443, ssl: true, req: req) if http.lastMethodSuccess != true { print("\(http.lastErrorText!)") return } // We should expect a 200 response if successful. if resp!.statusCode.intValue != 200 { print("Response StatusCode = \(resp!.statusCode.intValue)") print("Response StatusLine: \(resp!.statusLine!)") print("Response Header:") print("\(resp!.header!)") print("\(resp!.bodyStr!)") return } let xmlResponse = CkoXml()! success = xmlResponse.load(resp!.bodyStr) print("\(xmlResponse.getXml()!)") resp = nil var detail: String? = xmlResponse.chilkatPath("soap:Body|GetReportDataResponse|GetReportDataResult|Detail|*") let csv = CkoCsv()! csv.hasColumnNames = true csv.load(from: detail) print("NumRows = \(csv.numRows.intValue)") print("NumColumns = \(csv.numColumns.intValue)") // Iterate over the rows, getting the ItemCode, Name, and Barcode var i: Int = 0 var numRows: Int = csv.numRows.intValue while i < numRows { print("Item code: \(csv.getCellByName(i, columnName: "Item code")!)") print("Date timestamp: \(csv.getCellByName(i, columnName: "Date timestamp")!)") print("From: \(csv.getCellByName(i, columnName: "From")!)") print("To: \(csv.getCellByName(i, columnName: "To")!)") print("Quantity: \(csv.getCellByName(i, columnName: "Quantity")!)") print("Comments: \(csv.getCellByName(i, columnName: "Comments")!)") print("-") i = i + 1 } } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.