如何在Swift中发出SOAP API请求并检查响应

时间:2016-07-08 08:28:29

标签: ios swift api soap

我需要在Swift中发出SOAP API请求并检索响应。我是SOAP API和Swift的新手。我有一个API路径,API方法和输入参数。输出是JSON。

API路径:http://testapp.Lzoom.com/V3/UserProfile_V3.asmx API方法:Check_MobileFlag_V3()

输入参数:

SessionId:String

令牌:字符串

TimeStamp:String

输出参数:JSON

结果:整数

1:强制用户更改手机

-100:内部错误

-98:用户凭据错误,退出用户

1 个答案:

答案 0 :(得分:1)

我从您的问题中了解到,您不需要完整的soap框架来调用和处理响应。在这种情况下,您应该使用简单的xml解析器并构建自己的soap xml调用。

我会建议您使用cocoapods并将AEXML集成到您的项目中

这是一个简单的xml soap格式来进行调用

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
    <m:Trans xmlns:m="http://www.w3schools.com/transaction/" soap:mustUnderstand="1">234</m:Trans>
  </soap:Header>
  <soap:Body>
    <m:GetStockPrice>
      <m:StockName>AAPL</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>

它如何用AEXML构建它

let soapRequest = AEXMLDocument()
let attributes = ["xmlns:xsi" : "http://www.w3.org/2001/XMLSchema-instance", "xmlns:xsd" : "http://www.w3.org/2001/XMLSchema"]
let envelope = soapRequest.addChild(name: "soap:Envelope", attributes: attributes)
let header = envelope.addChild(name: "soap:Header")
let body = envelope.addChild(name: "soap:Body")
header.addChild(name: "m:Trans", value: "234", attributes: ["xmlns:m" : "http://www.w3schools.com/transaction/", "soap:mustUnderstand" : "1"])
let getStockPrice = body.addChild(name: "m:GetStockPrice")
getStockPrice.addChild(name: "m:StockName", value: "AAPL")
println(soapRequest.xmlString)

在准备肥皂电话之后,您可以使用任何网络库