im очень новый при программировании Swift (я сотовый биолог), но мне удалось получить довольно приличное приложение, использующее Swift 1.2. Приложение подключается к одной из систем LIMS моей лаборатории через веб-службы и выполняет различные задачи, такие как повторное подключение пользователей, выборка HTML и выборка PDF-файлов.Вызов WebService в Swift 2.0 vs Swift 1.2
Я решил перейти на бета-версию Xcode 7 и сделать свое приложение будущим, но, к сожалению, не удастся выйти из моего элемента. Мне удалось исправить большинство проблем, но я не могу заставить часть webservice функционировать. Может ли кто-нибудь, возможно, указать мне в правильном направлении. Ниже приведен фрагмент кода, который отвечает за часть webservice того, что я делаю.
Очевидно, что NSURLConnection больше не работает, поэтому я предполагаю, что это главное, что нужно изменить. Любая помощь будет высоко ценится! Я не хочу всю свою работу, тратятся впустую из-за Swift 2.0
var mutableData:NSMutableData = NSMutableData.alloc()
var currentElementName:NSString = ""
override func viewDidLoad() {
super.viewDidLoad()
currentws = ""
let soapMessage = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:web='http://www.labware.com/webservice'><soapenv:Header/><soapenv:Body><web:invoke><!--Optional:--><web:authToken>\(authCode)</web:authToken></web:invoke></soapenv:Body></soapenv:Envelope>"
let urlString = webAddress + "DEMO_USERS"
let url = NSURL(string: urlString)
let theRequest = NSMutableURLRequest(URL: url!)
let msgLength = String(soapMessage.characters.count)
theRequest.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
theRequest.addValue(msgLength, forHTTPHeaderField: "Content-Length")
theRequest.HTTPMethod = "POST"
theRequest.HTTPBody = soapMessage.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) // or false
theRequest.timeoutInterval = 30
let connection = NSURLConnection(request: theRequest, delegate: self, startImmediately: true)
connection?.start()
if (connection == true) {
let mutableData : Void = NSMutableData.initialize()
}
test.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) {
mutableData.length = 0;
}
func connection(connection: NSURLConnection, didReceiveData data: NSData) {
mutableData.appendData(data)
}
func connectionDidFinishLoading(connection: NSURLConnection) {
let xmlParser = NSXMLParser(data: mutableData)
xmlParser.delegate = self
xmlParser.parse()
xmlParser.shouldResolveExternalEntities = true
}
// NSXMLParserDelegate
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
currentElementName = elementName
}
func parser(parser: NSXMLParser, foundCharacters string: String?) {
if currentElementName == "ns:return" {
if (currentws == "") {
userString = string!
activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
//println(authCode)
test.reloadData()
} else {
reactstatus = "User Reactivated"
let alert = UIAlertController(title: "Success", message: "User : \(userName) successfully reactivated!", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
} else if currentElementName == "faultstring" {
activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
let alert = UIAlertController(title: "Alert", message: string, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
}
я получил, что отсюда [ссылка] (http://webindream.com/soap-with-swift/#comment-222) – Chopz
Любой разработчик IOS, кто знаком с SOAP. Мы действительно нуждаемся в серьезной помощи, потому что, как вы видите, никаких учебных пособий недостаточно для предоставления нам подобных Alamofire или AFNetworking, которые используют RESTful.Any, помогите кому угодно ... –