Klien SOAP generik ini memungkinkan Anda mengakses layanan web menggunakan aplikasi iOS, aplikasi Mac OS X, dan aplikasi Apple TV.
Dengan Framework ini Anda dapat membuat aplikasi iPhone, iPad, Mac OS X dan Apple TV yang mendukung SOAP Client Protocol. Framework ini mampu mengeksekusi metode pada layanan web jarak jauh dengan protokol standar SOAP.
Swift 4 : perpustakaan saat ini ditulis dalam Objective-C dan ketika Anda mengimpor perpustakaan Swift Anda akan mendapatkan kesalahan pembuatan seperti ini. The use of Swift 3 @objc inference in Swift 4 mode is deprecated
.
Untuk diam, peringatan ini perlu menyetel Swift 3 @objc Inference
ke nilai default dalam pengaturan Build target. tapi itu belum semuanya ; kelas yang digunakan untuk membuat permintaan harus dideklarasikan dengan @objcMembers
dan NSObject
, misalnya:
class MyClass { ... }
let param = MyClass ( )
// ...
// ...
let soap = SOAPEngine ( )
soap . setValue ( param , forKey : " myKey " )
// ...
// ...
deklarasi MyClass harus menjadi :
@ objcMembers class MyClass : NSObject { ... }
Dari Xcode 8 baru diperlukan pengaturan tambahan untuk aplikasi, jika pengaturan ini tidak ada Anda akan melihat pesan log seperti ini:
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.
Untuk mengatasinya, tambahkan beberapa kunci di info.plist, langkah-langkahnya adalah:
info.plist
proyek Anda.NSAppTransportSecurity
sebagai Kamus.NSAllowsArbitraryLoads
sebagai Boolean dan atur nilainya menjadi YES seperti gambar berikut. tautan referensi: http://stackoverflow.com/a/32631185/4069848
dengan Delegasi :
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 )
}
}
dengan pemrograman Blok :
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! )
}
}
}
dengan Pemberitahuan :
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 )
}
}
Permintaan sinkron :
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 )
}
}
}
pengaturan untuk Otentikasi SOAP :
soap . authorizationMethod = . AUTH_BASICAUTH; // basic auth
soap . username = " my-username " ;
soap . password = " my-password " ;
pengaturan untuk token OAuth2.0 Sosial :
// token authorization
soap . authorizationMethod = . AUTH_SOCIAL;
soap . apiKey = " 1234567890 " ; // your apikey https://dev.twitter.com/
soap . socialName = ACAccountTypeIdentifierTwitter; // import Accounts
Enkripsi/Dekripsi data tanpa SSL/HTTPS :
soap . encryptionType = . _ENCRYPT_AES256; // or SOAP_ENCRYPT_3DES
soap . encryptionPassword = " my-password " ;
Param dengan Atribut :
// 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 " ] )
itu membangun permintaan seperti ini:
< Book rack = " 2 " >
< name >Genesis name >
< chapter order = " asc " >1 chapter >
Book >
Pertama-tama, jika Anda melihat adanya perlambatan dalam respons permintaan, coba ubah nilai properti bernama actionNamespaceSlash
. Setelah itu, saat menggunakan metode bernama requestWSDL
ada tiga langkah yang dilakukan:
ini tidak dioptimalkan, sangat lambat, sebagai gantinya Anda dapat menggunakan optimasi di bawah ini:
SOAPEngine tersedia sebagai paket Swift. URL repositori valid untuk menambahkan paket di aplikasi Anda melalui Xcode.
Baca panduan "Memulai".
Baca Mengintegrasikan SOAPEngine dengan proyek Swift
Baca panduan "Instalasi Standar".
Uji coba hanya simulator | Aplikasi Tunggal id bundel tunggal | Perusahaan multi bundel-id |
---|---|---|
UNDUH | BELI 12,99€ | BELI 77,47€ |