WSDL2Swift 0.9.0

WSDL2Swift 0.9.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2019年4月
支持的 SPM支持 SPM

BAN Jun 维护。



 
依赖项
AEXML>= 0
BrightFutures< 7.0.0, >= 6.0.0-beta.1
ISO8601>= 0
Fuzi~> 2.0
 

WSDL2Swift

Build Status Version License Platform

WSDL2ObjC 的 Swift 代替品,用于制作 SOAP 请求并解析 WSDL 中定义的响应。无 Objective-C。

可以使用 Toki 实现用于单元测试的存根。

输入 & 输出

输入

  • WSDL 1.1 xmls
  • XSD xmls

输出

  • 一个作为 SOAP 客户端的 Swift 文件
    • Swift 4 (Xcode 9)
    • 使用 URLSession 进行连接
    • 使用 BrightFutures 返回异步请求
    • 使用 Fuzi 快速解析 xmls
    • 使用 AEXML 生成 xmls

使用方法

构建

bundle install
bundle exec fastlane archive

您可以使用WSDL2Swift方案对xcodeproj进行构建和调试。目前还不支持归档构建。

产品可执行文件是可移植的,前提是与./Frameworks和./Stencils一起发送。

生成

从WSDL和XSD xml生成WSDL.swift

./build/Build/Products/Release/WSDL2Swift --out path/to/WSDL.swift path/to/service.wsdl.xml path/to/service.xsd.xml

输入文件的顺序很重要。引用的XSD应置于引用WSDL之后。

在应用中使用

将WSDL.swift添加到您的项目中并使用:请注意,服务类型名称和请求类型名称可能会根据源WSDL而有所不同。

使用W3Schools温度转换器示例生成的代码

public struct TempConvert: WSDLService {
	:
    public func request(_ parameters: TempConvert_CelsiusToFahrenheit) -> Future<TempConvert_CelsiusToFahrenheitResponse, WSDLOperationError> {
        return requestGeneric(parameters)
    }
    :
}

:

public struct TempConvert_CelsiusToFahrenheit {
    public var Celsius: String?
}

public struct TempConvert_CelsiusToFahrenheitResponse {
    public var CelsiusToFahrenheitResult: String?
}

:
(continued...)

使用生成的客户端代码

let service = TempConvert(endpoint: "https://w3schools.org.cn")
service.request(TempConvert_CelsiusToFahrenheit(Celsius: "23.4")).onComplete { r in
    NSLog("%@", "TempConvert_CelsiusToFahrenheit(Celsius: \"23.4\") = \(r)")
}

带有依赖项

pod 'WSDL2Swift'

请注意,pod WSDL2Swift仅引入了运行时依赖。它不提供WSDL2Swift可执行二进制文件或生成的WSDL客户端Swift文件。

有时,在依赖链的某个地方(传递性框架依赖项或测试包)需要libxml2的头文件搜索路径。请参阅podspec以手动添加。

自定义

您可以通过编辑生成的代码来指定SOAP请求的字符集。

以下代码是您想指定字符编码为utf-8时的示例。

public var characterSetInContentType: CharacterSetInContentType {
    return .utf8
}

默认情况下,设置为未指定

示例

在xcodeproj中,iOSWSDL2Swift目标是一个使用WSDL2Swift的示例。它在构建的第一步生成WSDL+(ServiceName).swift并根据ViewController.swift使用它。

您需要将您的WSDL和XSD xml文件放置于exampleWSDLS文件夹中。

架构

使用视角...

  • 使用端点URL初始化Service (在生成 WSDL+(ServiceName).swift 之后可以更改端点URL)
  • 使用 ServiceName_OperationName(...) 初始化请求参数
  • 使用 Service.request(param) 获取由 NSURLSession 完成的 Future
  • 参数和模型根据xsd定义进行类型化(包括可为空的情况)