PicoKit 0.7.2

PicoKit 0.7.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2015年10月

Maxime Epain维护。



PicoKit 0.7.2

一个针对 iOS 平台的轻量级 Web 服务客户端框架。

注意

PicoKit 最初是 pico 的分支。

Pico(和相关项目:mxjcmwsc & nano)是由 bulldog2011 开发的,但从 2013 年起就保持原样。由于其设计和实现非常优秀,我决定将其分支并升级以支持 ARC,并通过 CocoaPods 提供它。

重要特性

  1. 支持 WSDL 驱动的开发,提供了代码生成工具以自动从 WSDL 生 strongly typed 代理。
  2. 支持 SOAP 1.1/1.2 和 XML 基于的 Web 服务。
  3. 支持自动 SOAP/XML 到 Objective-C 对象绑定,性能优于 iOS 原生 XML 解析器。
  4. 基于流行的成熟库 AFNetworking 开发。
  5. 经过与 Amazon ECommerce Web 服务和 eBay Finding/Shopping/Trading Web 服务等工业级 Web 服务的验证。
  6. 支持异步服务调用,灵活的 HTTP/SOAP 头部设置,超时设置,编码设置,日志记录等。

概述

The Big Picture

安装

您可以通过 CocoaPods 获取 PicoKit。要安装它,只需将以下行添加到您的 Podfile 中

pod 'PicoKit'

传统方式

将整个 Pico 源代码包含到您的项目中。如果您选择此选项,请确保

  1. 在目标构建设置中,将 -ObjC 标志添加到 "其他链接器标志"。
  2. 在目标构建设置中,将 /usr/include/libxml2 添加到 "头文件搜索路径"。
  3. 在目标构建阶段中,链接库 libxml2.dylib

WSDL 驱动的开发流程

  1. 从 WSDL 生成 Objective-C 代理
  2. 创建新的 iOS 项目,将 PicoKit 和生成的代理添加到您的项目中
  3. 实现应用逻辑和 UI,根据需要调用代理调用 Web 服务。

示例使用

从 wsdl 生成的服务代理后,通过 Pico 运行时调用服务非常简单

        // start progress activity
        [self.view makeToastActivity];

        // Get shared service client
        StockQuoteServiceClient *client = [StockQuoteServiceClient sharedClient];
        client.debug = YES; // enable request/response message logging

        // Build request object
        GetQuote *request = [[GetQuote alloc] init];
        request.symbol = _symbolText.text;

        // make API call and register callbacks
        [client getQuote:request success:^(GetQuoteResponse *responseObject) {

            // stop progress activity
            [self.view hideToastActivity];

            // show result
            _resultText.text = responseObject.getQuoteResult;
        } failure:^(NSError *error, id<PicoBindable> soapFault) {

            // stop progress activity
            [self.view hideToastActivity];

            if (error) { // http or parsing error
                [self.view makeToast:[error localizedDescription] duration:3.0 position:@"center" title:@"Error"];
            } else if (soapFault) {
                SOAP11Fault *soap11Fault = (SOAP11Fault *)soapFault;
                [self.view makeToast:soap11Fault.faultstring duration:3.0 position:@"center" title:@"SOAP Fault"];
            }
        }];

样本列表

所有样本均位于 示例 文件夹中,以下包含了这些样本

  • StockQuote - 使用来自 webserviceX.NET 的 StockQueue SOAP 网络服务的演示应用程序。
  • CurrencyConverter - 使用来自 webserviceX.NET 的 CurrencyConverter SOAP 网络服务的演示应用程序。
  • BarCode - 使用来自 webserviceX.NET 的 BarcodeGenerator SOAP 网络服务的演示应用程序。
  • Weather - 使用来自 wsf.cdyne.com 的 Weather SOAP 网络服务的演示应用程序。
  • AWSECommerce - 使用 Amazon Product Advertising API SOAP 调用的类似hello world的样本。
  • AWSECDemoApp - 使用 Amazon Product Advertising API 进行亚马逊图书搜索和购买的应用程序样本。
  • eBayFinding - 使用 eBay Finding API SOAP 调用的类似hello world的样本。
  • eBayShopping - 使用 eBay Shopping API XML 调用的类似hello world的样本。
  • eBayDemoApp - 使用 eBay Finding API 和 eBay Shopping API 的 eBay 搜索应用程序样本。

文档

  1. iOS上的Wsdl驱动开发 - 总览
  2. Pico教程1 - StockQuote示例
  3. Pico教程2 - CurrencyConverter示例
  4. Pico教程3 - eBay Finding服务
  5. Pico教程4 - eBay Shopping服务
  6. Pico教程5 - Amazon Product Advertising API
  7. Pico和eBay Trading API集成指南
  8. 使用Pico在iOS上轻松构建Web服务[ppt]

XML Schema类型与Objective-C类型之间的映射

XML Schema数据类型 Objective-C数据类型
xsd:base64Binary NSData
xsd:boolean NSNumber
xsd:byte NSNumber
xsd:date NSDate
xsd:dateTime NSDate
xsd:decimal NSNumber
xsd:double NSNumber
xsd:duration NSString
xsd:float NSNumber
xsd:g NSDate
xsd:hexBinary NSData
xsd:int NSNumber
xsd:integer NSNumber
xsd:long NSNumber
xsd:NOTATION NSString
xsd:Qname NSString
xsd:short NSNumber
xsd:string NSString
xsd:time NSDate
xsd:unsignedByte NSNumber
xsd:unsignedInt NSNumber
xsd:unsignedShort NSNumber

版本历史

版本 日期 描述
0.5.0 2013年3月25日 初始版本
0.6.0 2015年4月8日 支持ARC & CocoaPods
0.6.1 2015年4月10日 支持ARC & CocoaPods
0.7.0 2015年8月10日 升级到AFNetworking 2.5.4
0.7.1 2015年9月29日 升级到iOS9 & AFNetworking 2.6.0

当前限制

  1. 仅支持Document/Literal风格的Web服务,不支持RPC风格的Web服务。
  2. 不支持SOAP附件

相关项目

  1. Pico代理为Amazon Product Advertising API
  2. Pico代理为eBay Finding API
  3. Pico代理为eBay Shopping API
  4. Pico代理为eBay Trading API

许可

PicoKit可在MIT许可下获得。有关更多信息,请参阅LICENSE文件。