を送ります。私はどのように私がalamofireでそれを行うことができますかわからない。そして、どのように私はxmlの結果を解析する応答を取得します。スウィフト2.0 SOAP要求は、XMLパラメータ
これは私が郵便配達で行った方法ですが、私はどのように迅速に同じことをしたいのですか。
ありがとうございました。
を送ります。私はどのように私がalamofireでそれを行うことができますかわからない。そして、どのように私はxmlの結果を解析する応答を取得します。スウィフト2.0 SOAP要求は、XMLパラメータ
これは私が郵便配達で行った方法ですが、私はどのように迅速に同じことをしたいのですか。
ありがとうございました。
私はgithubのからこれを得た:
Alamofireは、任意のSOAPやXMLのサポートが組み込まれていないので、あなた自身を書くこと を持っていると思います。幸いにも、カスタムの 応答シリアライザを作成するのは簡単ですが、XML解析はあなた次第です。
パラメータについては、ドキュメントを参照して、組み込みエンコーディングの がどちらのユースケースに一致するかを確認してください。
SOAPEngine.をご覧ください。スイフトをサポートしており、よく維持されているようです。
これに関する助けがありますか? :http://stackoverflow.com/questions/34867328/how-to-work-with-soap-web-service-and-xml-parsing-in-swift –
無料のSDKではありません –
POSTリクエスト
て配置されることがあり、mutableRequest.HTTBodyありますログイン/パスワード/トークンまたは唯一の許可がある
行 - "Content-Type":または "Content-Length"は状況によって異なります。
SWXMLHash.parse(response.data!)応答を処理することで、あなたは[AlamoFire /使用/レスポンスの処理]でより多くを見ることができます(https://github.com/Alamofire/Alamofire)
Alamofire.request(.POST, "http://holidaywebservice.com/HolidayService_v2/HolidayService2.asmx?wsdl",
parameters: nil,
encoding: .Custom({
(convertible, params) in
//a.
let mutableRequest = convertible.URLRequest.copy() as! NSMutableURLRequest
// or
//b.
mutableRequest.URL =NSURL(string: theUrlString)
let mutableReques02 = NSMutableURLRequest(URL: theURL!)
//
//mutableReques02.HTTPBody =....
mutableRequest.HTTPBody =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"urn:sap-com:document:sap:rfc:functions\"><SOAP-ENV:Body>
<hs:GetHolidaysAvaible>
<hs:countrycode> UnitedStates</hs:countrycode>
</hs:GetHolidaysAvaible>
</SOAP-ENV:Body></SOAP-ENV:Envelope>".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
return (mutableRequest, nil)}),
headers:
["Username": "login", // Login API
"Password": "password" , // Password API
"AuthenticatedToken" : "35432", // Authenticated API
"Authorization": "Basic nasiouynvo8eyt829409", // Authenticated API
"Accept" : "text/xml",
"Content-Type" : "text/xml; charset=UTF-8", // Type content and charset accept
"Accept-Charset" : "UTF-8",])
.responsePropertyList { response in
let xml = SWXMLHash.parse(response.data!)
print(xml)
}
注:私の英語はあまり良くありません
答えにあなたのコードの説明 –
今すぐ確認、私は説明しよう –
私はXMLMapperと呼ばれるXMLをオブジェクトにマッピングするポッドを書きました。 ObjectMapperと同じテクニックを使用します。
Requests subspecを使用すると、簡単にSOAP要求を作成できます。
まず、独自のカスタムSOAPMessage
作成:Finaly Alamofireを使用してSOAPリクエストを送信
let soapMessage = HolidayServiceMessage(soapAction: "GetHolidaysAvaible", nameSpace: "http://holidaywebservice.com/HolidayService_v2")
soapMessage.countryCode = "UnitedStates"
let soapEnvelope = SOAPEnvelope(soapMessage: soapMessage)
:その後のようなのSOAPEnvelopeを作成
class HolidayServiceMessage: SOAPMessage {
var countryCode: String?
override func mapping(map: XMLMap) {
super.mapping(map: map)
countryCode <- map["m:countrycode"]
}
}
を
Alamofire.request("http://holidaywebservice.com/HolidayService_v2/HolidayService2.asmx?wsdl", method: .post, parameters: soapEnvelope.toXML(), encoding: XMLEncoding.soap(withAction: "http://holidaywebservice.com/HolidayService_v2#GetHolidaysAvaible"))
あなたがマップすることができますXMLMappable
プロトコルを使用してオブジェクトを迅速に返すXML応答。
https://github.com/cezheng/Fuziなどのパーサーでは、XPathやCSSセレクタを使用してXMLを解析しやすくなります。独自のシリアライザを定義することができます。 https://github.com/tristanhimmelman/AlamofireObjectMapperを見てください。これは、独自のAlamofire応答シリアライザを作成する良い例です。 – cezheng