使用swift从ios中的类生成soap消息

时间:2015-02-17 06:11:35

标签: ios swift

我有很多课程,其中包含我想发送给服务器的数据&我想基于类生成动态soapMessage我该怎么做?

我使用下面的函数来获取简单消息的soapMessage,

func generateSoapMsgBody<T>(a: T)->String{

    let classObject = a


    //to get class name
    var className=reflect(classObject).summary.componentsSeparatedByString(".").last!


    var test = GetAirports()


    var opTag = "<\(className)>"

    var count = reflect(classObject).count

    for var index = 0;index<count ;++index{


        var varName = reflect(classObject)[index].0
        var value = reflect(classObject)[index].1.value

        opTag += "<\(varName)>\(value)</\(varName)>"


        }



    opTag += "</\(className)>"
    }

如何使用嵌套数组生成复杂类型的消息&amp;嵌套类。

1 个答案:

答案 0 :(得分:0)

说实话,使用SOAP Web API,我发现最简单的做法如下:

  1. 使用适当的替换变量&#34; holes&#34;创建模板XML。我通常将这些模板作为资源
  2. 将模板加载到内存中,并根据需要替换变量
  3. 将此字符串发布到SOAP服务
  4. 例如,如果项目文件中包含以下XML:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelop ...>
      <soap:Body>
        <A>%@</A>
        <B>%@</B>
      </soap:Body>
    </soap:Envelop>
    

    然后您使用NSBundlepathForResource加载它,并在从资源中检索NSString后,使用.format替换%@中的{{1}}资源与您的类变量。

    这为您提供了POST到SOAP服务所需的字符串。

    我发现这是最灵活,最简单的单元测试,最简单的方法是在使用C#/ wsdl / soap代理生成器之外使用SOAP服务。