ไคลเอนต์ SOAP ทั่วไปนี้ช่วยให้คุณเข้าถึงบริการเว็บโดยใช้แอพ iOS, แอพ Mac OS X และแอพ Apple TV
ด้วยเฟรมเวิร์กนี้ คุณสามารถสร้างแอพ iPhone, iPad, Mac OS X และ Apple TV ที่รองรับ SOAP Client Protocol เฟรมเวิร์กนี้สามารถดำเนินการวิธีการบริการเว็บระยะไกลด้วยโปรโตคอลมาตรฐาน SOAP
Swift 4 : ขณะนี้ไลบรารีถูกเขียนใน Objective-C และเมื่อคุณนำเข้าไลบรารี Swift คุณจะได้รับข้อผิดพลาดในการสร้างเช่นนี้ The use of Swift 3 @objc inference in Swift 4 mode is deprecated
สำหรับการเงียบคำเตือนนี้จำเป็นต้องตั้งค่า Swift 3 @objc Inference
เป็นค่าเริ่มต้นในการตั้งค่า Build ของเป้าหมาย แต่ไม่ใช่ทั้งหมด ; คลาสที่ใช้ในการสร้างคำขอจะต้องประกาศด้วย @objcMembers
และ NSObject
เช่น:
class MyClass { ... }
let param = MyClass ( )
// ...
// ...
let soap = SOAPEngine ( )
soap . setValue ( param , forKey : " myKey " )
// ...
// ...
การประกาศของ MyClass จะต้องเป็น:
@ objcMembers class MyClass : NSObject { ... }
จำเป็นต้องมีการตั้งค่าเพิ่มเติมสำหรับแอปจาก Xcode 8 ใหม่ หากไม่มีการตั้งค่านี้ คุณจะเห็นข้อความบันทึกดังนี้:
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.
หากต้องการแก้ไขปัญหานี้ ให้เพิ่มคีย์สองสามอันใน info.plist โดยมีขั้นตอนดังนี้:
info.plist
ของโครงการของคุณNSAppTransportSecurity
เป็นพจนานุกรมNSAllowsArbitraryLoads
เป็น Boolean และตั้งค่าเป็น YES เหมือนกับรูปภาพต่อไปนี้ ลิงค์อ้างอิง: http://stackoverflow.com/a/32631185/4069848
กับ ผู้แทน :
import SOAPEngine64
class ViewController : UIViewController , SOAPEngineDelegate {
var soap : SOAPEngine = SOAPENgine ( )
override func viewDidLoad ( ) {
soap . delegate = self
soap . actionNamespaceSlash = true
soap . 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 ! )
{
let dict = soapEngine . dictionaryValue ( )
print ( dict )
}
}
ด้วย การเขียนโปรแกรมแบบบล็อก :
import SOAPEngine64
class ViewController : UIViewController {
var soap : SOAPEngine = SOAPENgine ( )
override func viewDidLoad ( ) {
super . viewDidLoad ( )
soap . actionNamespaceSlash = true
soap . 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 ] ? ) -> Void in
let book : NSDictionary = dict! as NSDictionary
let verses = book [ " BibleBookChapterVerse " ] as! NSArray
print ( verses )
} ) { ( error : Error ? ) -> Void in
print ( error! )
}
}
}
ด้วย การแจ้งเตือน :
import SOAPEngine64
class ViewController : UIViewController {
var soap : SOAPEngine = SOAPENgine ( )
override func viewDidLoad ( ) {
super . viewDidLoad ( )
NotificationCenter . default . addObserver ( self ,
selector : #selector ( soapEngineDidFinishLoading ( _ : ) ) ,
name : NSNotification . Name . SOAPEngineDidFinishLoading ,
object : nil )
soap . actionNamespaceSlash = true
soap . 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 " )
}
@ objc func soapEngineDidFinishLoading ( _ notification : NSNotification ) {
let engine = notification . object as? SOAPEngine
let dict = engine ( )
print ( dict )
}
}
คำขอ แบบซิงโครนัส :
import SOAPEngine64
class ViewController : UIViewController {
var soap : SOAPEngine = SOAPENgine ( )
override func viewDidLoad ( ) {
super . viewDidLoad ( )
soap . actionNamespaceSlash = true
soap . setValue ( " Genesis " , forKey : " BookName " )
soap . setIntegerValue ( 1 , forKey : " chapter " )
// standard soap service (.asmx)
do {
let result = try soap . syncRequestURL ( " http://www.prioregroup.com/services/americanbible.asmx " ,
soapAction : " http://www.prioregroup.com/GetVerses " )
print ( result )
}
catch {
print ( error )
}
}
}
การตั้งค่าสำหรับ SOAP Authentication :
soap . authorizationMethod = . AUTH_BASICAUTH; // basic auth
soap . username = " my-username " ;
soap . password = " my-password " ;
การตั้งค่าสำหรับโทเค็น Social OAuth2.0 :
// token authorization
soap . authorizationMethod = . AUTH_SOCIAL;
soap . apiKey = " 1234567890 " ; // your apikey https://dev.twitter.com/
soap . socialName = ACAccountTypeIdentifierTwitter; // import Accounts
ข้อมูล การเข้ารหัส/ถอดรหัส ที่ไม่มี SSL/HTTPS :
soap . encryptionType = . _ENCRYPT_AES256; // or SOAP_ENCRYPT_3DES
soap . encryptionPassword = " my-password " ;
Params พร้อม คุณสมบัติ :
// book
var book = [ " name " : " Genesis " ] as! NSMutableDictionary
var attr = [ " order " : " asc " ]
// chapter
var child = soap . dictionary ( forKey : " chapter " , value : " 1 " , attributes : attr )
book . addEntries ( from : child! )
// book attributes
soap . setValue ( book , forKey : " Book " , attributes : [ " rack " : " 2 " ] )
มันสร้างคำขอเช่นนี้:
< Book rack = " 2 " >
< name >Genesis name >
< chapter order = " asc " >1 chapter >
Book >
ก่อนอื่น หากคุณสังเกตเห็นว่าการตอบสนองคำขอช้าลง ให้ลองเปลี่ยนค่าของคุณสมบัติชื่อ actionNamespaceSlash
หลังจากนั้น เมื่อใช้วิธีการชื่อ requestWSDL
จะดำเนินการสามขั้นตอน:
สิ่งนี้ไม่ได้รับการปรับให้เหมาะสม ช้ามาก แต่คุณสามารถใช้การเพิ่มประสิทธิภาพด้านล่างแทนได้:
SOAPEngine มีให้บริการในรูปแบบแพ็คเกจ Swift URL ของที่เก็บนั้นใช้สำหรับการเพิ่มแพ็คเกจในแอปของคุณผ่าน Xcode
อ่านคู่มือ "การเริ่มต้นใช้งาน"
อ่านโครงการบูรณาการ SOAPEngine กับ Swift
อ่านคู่มือ "การติดตั้งมาตรฐาน"
การทดลอง แค่เครื่องจำลอง | แอพเดียว ID บันเดิลเดี่ยว | องค์กร หลายบันเดิล-id |
---|---|---|
ดาวน์โหลด | ซื้อ 12,99€ | ซื้อ 77,47€ |