0
我沒有找到關於如何在swift 3上發送SOAP
請求的任何信息。我有一個SOAP
API和XML
。我使用Alamofire作爲我的項目的網絡客戶端。我的問題是如何在Swift上使用XML
來請求SOAP
,最好是使用Alamofire庫。帶有XML響應和body swift的SOAP請求3,Alamofire
我沒有找到關於如何在swift 3上發送SOAP
請求的任何信息。我有一個SOAP
API和XML
。我使用Alamofire作爲我的項目的網絡客戶端。我的問題是如何在Swift上使用XML
來請求SOAP
,最好是使用Alamofire庫。帶有XML響應和body swift的SOAP請求3,Alamofire
我用以下庫
pod 'Alamofire'
pod 'SWXMLHash'
pod 'AEXML'
pod 'StringExtensionHTML'
然後,你需要導入
import SWXMLHash
import StringExtensionHTML
import AEXML
import Alamofire
此功能爲我的作品
func getLines(){
let soapRequest = AEXMLDocument()
let envelopeAttributes = ["xmlns:soap":"http://schemas.xmlsoap.org/soap/envelope/", "xmlns:i" :"http://www.w3.org/2001/XMLSchema-instance","xmlns:d" : "http://www.w3.org/2001/XMLSchema","xmlns:c":"http://schemas.xmlsoap.org/soap/encoding/","xmlns:v":"http://schemas.xmlsoap.org/soap/envelope/"]
let act : AEXMLElement = AEXMLElement(name: "n0:getAllStations", value: "", attributes: ["id":"o0","c:root":"1", "xmlns:n0":"http://ws.wso2.org/dataservice"])
let child1 : AEXMLElement = AEXMLElement(name: "lang", value: "en", attributes: ["i:type":"d:string"])
act.addChild(child1)
let envelope = soapRequest.addChild(name: "soap:Envelope", attributes: envelopeAttributes)
envelope.addChild(name :"soap:Header")
let body = envelope.addChild(name: "soap:Body")
body.addChild(act)
let soapLenth = String(soapRequest.xml.characters.count)
let theURL = URL(string: "http://103.11.35.13:9080/services/RailwayWebServiceV2Proxy.RailwayWebServiceV2ProxyHttpSoap12Endpoint")
print(soapRequest.xml)
var mutableR = URLRequest(url: theURL!)
mutableR.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
mutableR.addValue(soapLenth, forHTTPHeaderField: "Content-Length")
mutableR.addValue("getAllStations", forHTTPHeaderField: "SOAPAction")
mutableR.httpMethod = "POST"
mutableR.httpBody = soapRequest.xml.data(using: String.Encoding.utf8)
Alamofire.request(mutableR)
.responseString { response in
if let xmlString = response.result.value {
let xml = SWXMLHash.parse(xmlString)
for element in xml["soapenv:Envelope"]["soapenv:Body"]["datas1:lines"]["datas1:line"].all {
if let nameElement = element["datas1:id"].element {
let line = Lines()
line.id = Int(nameElement.text)
self.lines.append(line)
}
if let nameElement = element["datas1:LineName"].element {
let line = Lines()
line.LineName = nameElement.text
self.lines.append(line)
}
}
}else{
print("error fetching XML")
}
}
}
試試這個:http://blastar.biz/2016/08/09/swift-how-to-consume-soap-using-alamofire/ – KKRocks
Ty,man;)這可能是正確的答案。 – couldDog
高興地幫助你:) – KKRocks