Created
November 20, 2014 09:46
-
-
Save jacks205/f998654983796b7cbf1c to your computer and use it in GitHub Desktop.
Basic Example of creating a SOAP request with AEXML and through a normal NSMutableURLRequest
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// CitizenViewController.swift | |
// citizencrossfit | |
// | |
// Created by Mark Jackson on 19/11/2014. | |
// Copyright (c) 2014 Mark Jackson. All rights reserved. | |
// | |
import UIKit | |
class CitizenViewController: UIViewController{ | |
override func viewDidLoad(){ | |
super.viewDidLoad() | |
} | |
override func viewDidAppear(animated: Bool) { | |
super.viewDidAppear(animated) | |
let soapRequest = AEXMLDocument(version: 1.0, encoding: "utf-8", standalone: "no") | |
let attributes = ["xmlns:xsi" : "http://www.w3.org/2001/XMLSchema-instance", "xmlns:xsd" : "http://www.w3.org/2001/XMLSchema", "xmlns:soap": "http://schemas.xmlsoap.org/soap/envelope/"] | |
let envelope = soapRequest.addChild("soap:Envelope", attributes: attributes) | |
let body = envelope.addChild("soap:Body") | |
let getClasses = body.addChild("GetClasses", attributes: ["xmlns" : "http://clients.mindbodyonline.com/api/0_5"]) | |
let request = getClasses.addChild("Request") | |
//Source Credentials | |
let sourceCredentials = request.addChild("SourceCredentials") | |
sourceCredentials.addChild("SourceName").value = "MarkJacksonCrossfit" | |
sourceCredentials.addChild("Password").value = "SA0qUvKP6ndeb8mDdGaZJRFnS7g=" | |
let siteIds = sourceCredentials.addChild("SiteIDs") | |
siteIds.addChild("int").value = "-99" | |
//User Credentials | |
let userCredentials = request.addChild("UserCredentials") | |
userCredentials.addChild("Username").value = "Siteowner" | |
userCredentials.addChild("Password").value = "apitest1234" | |
let userSiteIds = userCredentials.addChild("SiteIDs") | |
userSiteIds.addChild("int").value = "-99" | |
//Fields | |
let fields = request.addChild("Fields") | |
fields.addChild("string").value = "Classes.Resource" | |
//XMLDetail | |
request.addChild("XMLDetail").value = "Basic" | |
//PageSize | |
request.addChild("PageSize").value = "10" | |
//CurrentPageIndex | |
request.addChild("CurrentPageIndex").value = "0" | |
// println(soapRequest.xmlString) | |
let reqData : NSData = soapRequest.xmlString.dataUsingEncoding(NSUTF8StringEncoding)! | |
let urlRequest : NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "https://api.mindbodyonline.com/0_5/ClassService.asmx")!) | |
urlRequest.HTTPMethod = "POST" | |
urlRequest.setValue("api.mindbodyonline.com", forHTTPHeaderField: "Host") | |
urlRequest.setValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type") | |
urlRequest.setValue("length", forHTTPHeaderField: "Content-Length") | |
urlRequest.setValue("http://clients.mindbodyonline.com/api/0_5/GetClasses", forHTTPHeaderField: "SOAPAction") | |
urlRequest.HTTPBody = reqData | |
urlRequest.timeoutInterval = 10 | |
println(urlRequest.allHTTPHeaderFields!) | |
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue(), completionHandler: { (response, data: NSData?, error: NSError?) -> Void in | |
if (error == nil) { | |
var resData = NSString(data: data!, encoding: NSUTF8StringEncoding) | |
var xmlError : NSError? | |
if let xmlDoc = AEXMLDocument(xmlData: data!, error: &xmlError){ | |
let getClassesResult = xmlDoc.rootElement["soap:Body"]["GetClassesResponse"]["GetClassesResult"] | |
let classes = getClassesResult["Classes"] | |
for child in classes.children { | |
println(child.name) | |
} | |
} | |
}else{ | |
println(error) | |
} | |
}) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment