Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and AppleTV app.

License

NotificationsYou must be signed in to change notification settings

priore/SOAPEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SOAPEngine


VersionLanguagePlatformLicensecodebeat badgeTwitter: @DaniloPriore

This genericSOAP client allows you to access web services using a youriOS app,Mac OS X app andApple TV app.

With this Framework you can createiPhone,iPad,Mac OS X andApple TV apps that supportsSOAP Client Protocol. This framework able executes methods at remote web services withSOAP standard protocol.

Features


  • Support both 2001 (v1.1) and 2003 (v1.2)XML schema.
  • Support array, array of structs, dictionary and sets.
  • Support for user-defined object with serialization of complex data types and array of complex data types, even embedded multilevel structures.
  • SupportsASMX Services,WCF Services (SVC) and now also theWSDL definitions.
  • SupportsBasic,Digest andNTLM Authentication,WS-Security, Client side Certificate and custom security header.
  • SupportsiOS Social Account to sendOAuth2.0 token on the request.
  • AES256 or3DES Encrypt/Decrypt data withoutSSL security.
  • An example of service and how to use it is included in source code.

Requirements foriOS


  • iOS 8.0 and later
  • Xcode 8.0 or later
  • Security.framework
  • Accounts.framework
  • Foundation.framework
  • UIKit.framework
  • libxml2.dylib

Requirements forMac OS X


  • OS X 10.9 and later
  • Xcode 8.0 or later
  • Security.framework
  • Accounts.framework
  • Foundation.framework
  • AppKit.framework
  • Cocoa.framework
  • libxml2.dylib

Requirements forApple TV


  • iOS 9.0 and later
  • Xcode 8.0 or later
  • Security.framework
  • Foundation.framework
  • UIKit.framework
  • libxml2.dylib

Limitations


Known issues


  • Swift 4: the library is currently written in Objective-C and when you import the swift library you will get build errors like thisThe use of Swift 3 @objc inference in Swift 4 mode is deprecated.

    For silent this warning is need setsSwift 3 @objc Inference to default value in the the Build settings of target.but It's not all; the classes used to create requests must be declared with@objcMembers andNSObject, eg:

    classMyClass{...}letparam=MyClass() // ... // ...letsoap=SOAPEngine() soap.setValue(param, forKey:"myKey") // ... // ...

    the declaration of MyClass must become :

    @objcMembersclassMyClass:NSObject{...}

Security for Xcode 8.x or later


From the new Xcode 8 is required an additional setting for the apps, if this setting does not exist you will see a log message like this:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

To resolve this, add few keys in info.plist, the steps are:

  1. Openinfo.plist file of your project.
  2. Add a Key calledNSAppTransportSecurity as a Dictionary.
  3. Add a Subkey calledNSAllowsArbitraryLoads as Boolean and set its value to YES as like following image.

NSAppTransportSecurity

ref link:http://stackoverflow.com/a/32631185/4069848

How to use


withDelegates :

import SOAPEngine64classViewController:UIViewController,SOAPEngineDelegate{varsoap:SOAPEngine=SOAPENgine()overridefunc viewDidLoad(){soap.delegate=selfsoap.actionNamespaceSlash=truesoap.setValue("Genesis", forKey:"BookName")soap.setIntegerValue(1, forKey:"chapter")// standard soap service (.asmx)soap.requestURL("http://www.prioregroup.com/services/americanbible.asmx",    soapAction:"http://www.prioregroup.com/GetVerses")}func soapEngine(_ soapEngine:SOAPEngine!, didFinishLoadingWith dict:[AnyHashable:Any]!, data:Data!){letdict= soapEngine.dictionaryValue()print(dict)}}

withBlock programming :

import SOAPEngine64classViewController:UIViewController{varsoap:SOAPEngine=SOAPENgine()overridefunc viewDidLoad(){super.viewDidLoad()soap.actionNamespaceSlash=truesoap.setValue("Genesis", forKey:"BookName")        soap.setIntegerValue(1, forKey:"chapter")                soap.requestURL("http://www.prioregroup.com/services/americanbible.asmx",        soapAction:"http://www.prioregroup.com/GetVerses",completeWithDictionary:{(statusCode:Int?, dict:[AnyHashable:Any]?)->Voidinletbook:NSDictionary= dict!asNSDictionaryletverses=book["BibleBookChapterVerse"]as!NSArrayprint(verses)}){(error:Error?)->Voidinprint(error!)}}}

withNotifications :

import SOAPEngine64classViewController:UIViewController{varsoap:SOAPEngine=SOAPENgine()overridefunc viewDidLoad(){super.viewDidLoad()NotificationCenter.default.addObserver(self, selector: #selector(soapEngineDidFinishLoading(_:)), name:NSNotification.Name.SOAPEngineDidFinishLoading, object:nil)soap.actionNamespaceSlash=truesoap.setValue("Genesis", forKey:"BookName")soap.setIntegerValue(1, forKey:"chapter")// standard soap service (.asmx)soap.requestURL("http://www.prioregroup.com/services/americanbible.asmx",    soapAction:"http://www.prioregroup.com/GetVerses")}@objcfunc soapEngineDidFinishLoading(_ notification:NSNotification){letengine= notification.objectas?SOAPEngineletdict=engine()print(dict)}}

Synchronous request :

import SOAPEngine64classViewController:UIViewController{varsoap:SOAPEngine=SOAPENgine()overridefunc viewDidLoad(){super.viewDidLoad()soap.actionNamespaceSlash=truesoap.setValue("Genesis", forKey:"BookName")soap.setIntegerValue(1, forKey:"chapter")// standard soap service (.asmx)do{letresult=try soap.syncRequestURL("http://www.prioregroup.com/services/americanbible.asmx",  soapAction:"http://www.prioregroup.com/GetVerses")print(result)}catch{print(error)}}}

settings forSOAP Authentication :

soap.authorizationMethod=.AUTH_BASICAUTH; // basic authsoap.username="my-username";soap.password="my-password";

settings for SocialOAuth2.0 token :

// token authorizationsoap.authorizationMethod=.AUTH_SOCIAL;soap.apiKey="1234567890"; // your apikey https://dev.twitter.com/soap.socialName= ACAccountTypeIdentifierTwitter; // import Accounts

Encryption/Decryption data without SSL/HTTPS :

soap.encryptionType=._ENCRYPT_AES256; // or SOAP_ENCRYPT_3DESsoap.encryptionPassword="my-password";

Params withAttributes :

// bookvarbook=["name":"Genesis"]as!NSMutableDictionaryvarattr=["order":"asc"]// chaptervarchild= soap.dictionary(forKey:"chapter", value:"1", attributes: attr)book.addEntries(from: child!)// book attributessoap.setValue(book, forKey:"Book", attributes:["rack":"2"])

it builds a request like this:

<Bookrack="2"><name>Genesis</name><chapterorder="asc">1</chapter></Book>

Optimizations


First of all, if you note a slowdown in the response of the request, try to change the value of the property namedactionNamespaceSlash.After, when using the method namedrequestWSDL three steps are performed :

  1. retrieve the WSDL with an http request
  2. processing to identify the soapAction
  3. calls the method with an http requesthttp request

this is not optimized, very slow, instead you can use the optimization below :

  1. retrieving manually the SOAPAction directly from WSDL (once with your favorite browser).
  2. use the method named requestURL instead of requestWSDL without WSDL extension.

Install in your apps


Swift Package Manager

SOAPEngine is available as a Swift package. The repositoryURL is valid for adding the package in your app through the Xcode.

Cocoapods

Read the"Getting Started" guide

Cocoapods and Swift

Read theIntegrating SOAPEngine with a Swift project

Standard installation

Read the"Standard Installation" guide

Licenses

Trial
just simulator
Single App
single bundle-id
Enterprise
multi bundle-id
DOWNLOADBUY 12,99€BUY 77,47€

About

This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and AppleTV app.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

    Packages

    No packages published

    Languages


    [8]ページ先頭

    ©2009-2025 Movatter.jp