Skip to content

Instantly share code, notes, and snippets.

@ecarnevale
Last active December 16, 2016 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ecarnevale/5bdece2d494874793b41979de86b9e49 to your computer and use it in GitHub Desktop.
Save ecarnevale/5bdece2d494874793b41979de86b9e49 to your computer and use it in GitHub Desktop.
import Alamofire
let urlString = "http://example.org/Webserver.WcfService.Service"
let headers: HTTPHeaders = [
"Accept" : "text/xml",
"Content-Type" : "text/xml; charset=UTF-8",
"SOAPAction": "http://tempuri.org/Service/GetInfo" //this is important and the value depends on your WSDL, but with our experiments, without this header nothing works
]
let parameters: Parameters = [
"UserName": "username",
"Password": "password",
"firstParameter": "firstParameter value",
"secondParameter": "secondParameter value",
]
var req = Alamofire.request(urlString, method: .post, parameters: parameters, encoding: "requestEncoding", headers: headers)
req.responseString{ response in
debugPrint(response)
switch response.result{
case .success( _):
//process response.data!
case .failure(let error):
//process error
}
}
extension String: ParameterEncoding {
public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var request = try urlRequest.asURLRequest()
let params = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
+ "<soap:Envelope\n"
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"\n"
+ "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+ "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n"
+ "<soap:Body>\n"
+ "<GetInfo xmlns=\"http://tempuri.org/\">\n"
+ "<UserName xmlns=\"http://tempuri.org/\">\((parameters?["UserName"])!)</UserName>\n"
+ "<Password xmlns=\"http://tempuri.org/\">\((parameters?["Password"])!)</Password>\n"
+ "<FirstParameter xmlns=\"http://tempuri.org/\">\((parameters?["FirstParameter"])!)</FirstParameter>\n"
+ "<SecondParameter xmlns=\"http://tempuri.org/\">\((parameters?["SecondParameter"])!)</SecondParameter>\n"
+ "</GetInfo>\n"
+ "</soap:Body>\n"
+ "</soap:Envelope>\n"
request.httpBody = params.data(using: .utf8)!
return request
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment