mik*_*sis 3 xml ios swift alamofire swxmlhash
我在我的项目中安装了Alamofire,现在这就是我所做的.
我安装了邮差,我把我的网址和内部的一个xml对象,我得到了我的结果.
这是我对邮递员所做的一切
我现在如何使用Alamofire或SWXMLHash发送它,因为我发送邮件
提前致谢!
编辑
我从另一个问题尝试了这个:
Alamofire.request(.POST, "https://something.com" , parameters: Dictionary(), encoding: .Custom({
(convertible, params) in
let mutableRequest = convertible.URLRequest.copy() as! NSMutableURLRequest
let data = (self.testString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
mutableRequest.HTTPBody = data
return (mutableRequest, nil)
}))
.responseJSON { response in
print(response.response)
print(response.result)
}
}
Run Code Online (Sandbox Code Playgroud)
但它没有发送任何东西
这是日志:
可选({URL:https: //something.com } {状态代码:200,headers {Connection ="keep-alive";"Content-Length"= 349;"Content-Type"="application/xml";日期="Wed,2016年11月2日21:13:32 GMT"; Server = nginx;"Strict-Transport-Security"="max-age = 31536000; includeSubDomains";}})
失败
编辑
如果没有简单的添加,请不要忘记参数参数:参数:Dictionary()
使用Swift 3和Alamofire 4
Run Code Online (Sandbox Code Playgroud)let stringParams : String = "<msg id=\"123123\" reqTime=\"123123\">" + "<params class=\"API\">" + "<param name=\"param1\">123213</param>" + "<param name=\"param2\">1232131</param>" + "</params>" + "</msg>" let url = URL(string:"<#URL#>") var xmlRequest = URLRequest(url: url!) xmlRequest.httpBody = stringParams.data(using: String.Encoding.utf8, allowLossyConversion: true) xmlRequest.httpMethod = "POST" xmlRequest.addValue("application/xml", forHTTPHeaderField: "Content-Type") Alamofire.request(xmlRequest) .responseData { (response) in let stringResponse: String = String(data: response.data!, encoding: String.Encoding.utf8) as String! debugPrint(stringResponse) }
使用 Swift 3 和 Alamofire 4,您可以创建自定义ParameterEncoding. 与任何其他 XML 编码主体一样,SOAP 消息可以使用此参数编码,如下例所示。可以类似地创建其他 XML 正文编码(检查它说的行urlRequest.httpBody = ...):
struct SOAPEncoding: ParameterEncoding {
let service: String
let action: String
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = try urlRequest.asURLRequest()
guard let parameters = parameters else { return urlRequest }
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("text/xml", forHTTPHeaderField: "Content-Type")
}
if urlRequest.value(forHTTPHeaderField: "SOAPACTION") == nil {
urlRequest.setValue("\(service)#\(action)", forHTTPHeaderField: "SOAPACTION")
}
let soapArguments = parameters.map({key, value in "<\(key)>\(value)</\(key)>"}).joined(separator: "")
let soapMessage =
"<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/' s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>" +
"<s:Body>" +
"<u:\(action) xmlns:u='\(service)'>" +
soapArguments +
"</u:\(action)>" +
"</s:Body>" +
"</s:Envelope>"
urlRequest.httpBody = soapMessage.data(using: String.Encoding.utf8)
return urlRequest
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
Alamofire.request(url, method: .post, parameters: ["parameter" : "value"], encoding: SOAPEncoding(service: "service", action: "action"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6167 次 |
| 最近记录: |