繁体   English   中英

使用SOAP的Swift和Web服务

[英]Swift and web service with SOAP

我只是从快速开始为IOS编程。 我已经做过一个使用一些Web服务的Android应用程序。 我需要做相同的应用程序,但现在是IOS。 我已经可以正确调用Web服务并打印响应,但是我需要访问Web服务返回的属性。 啊,我有各种各样的Web服务,其中一些返回字符串数组。 这是我用来调用服务的代码

var lobj_Request = NSMutableURLRequest(URL: NSURL(string: URLString)!)
    var session = NSURLSession.sharedSession()
    var err: NSError?
    var user = nameTextField.text
    var pass = passTextField.text
    lobj_Request.HTTPMethod = "POST"
    lobj_Request.HTTPBody = soapMessage.dataUsingEncoding(NSUTF8StringEncoding)
    lobj_Request.addValue(hostString, forHTTPHeaderField: "Host")
    lobj_Request.addValue("application/soap+xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
    lobj_Request.addValue(String(soapMessage.characters.count), forHTTPHeaderField: "Content-Length")
    lobj_Request.addValue(SOAP_ACTION, forHTTPHeaderField: "SOAPAction")
    var task = session.dataTaskWithRequest(lobj_Request, completionHandler: {data, response, error -> Void in
        print("Response: \(response)")
        var strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("Body: \(strData)")

        if error != nil
        {
            print("Error: " + error!.description)
        }

    })
    task.resume()

我知道属性在数据中(显然),但是我不知道如何访问它们。

我找到了一个很好的库来解决这个问题。 称为SWXMLHash。 https://github.com/drmohundro/SWXMLHash我只是这样做:

var lobj_Request = NSMutableURLRequest(URL: NSURL(string: URLString)!)
var session = NSURLSession.sharedSession()
var err: NSError?
var user = nameTextField.text
var pass = passTextField.text
lobj_Request.HTTPMethod = "POST"
lobj_Request.HTTPBody = soapMessage.dataUsingEncoding(NSUTF8StringEncoding)
lobj_Request.addValue(hostString, forHTTPHeaderField: "Host")
lobj_Request.addValue("application/soap+xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
lobj_Request.addValue(String(soapMessage.characters.count), forHTTPHeaderField: "Content-Length")
lobj_Request.addValue(SOAP_ACTION, forHTTPHeaderField: "SOAPAction")
var task = session.dataTaskWithRequest(lobj_Request, completionHandler: {data, response, error -> Void in
    print("Response: \(response)")
    var strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
    print("Body: \(strData)")

    var xml = SWXMLHash.parse(data!)

    var propertyIwant = xml["soap:Envelope"]["soap:Body"]["SoapResponse"]["SomeField"]["propertyIwant"].element?.text

    if error != nil
    {
        print("Error: " + error!.description)
    }

})
task.resume()

如果您的Web服务使用JSON返回字符串,则需要对其进行解析。 请考虑: https : //www.hackingwithswift.com/example-code/system/how-to-parse-json-using-nsjsonserialization

如果它是XML字符串: http : //dubinski.org/wpis/easy-xml-parsing-in-swift/

我的意思是“ strData”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM