自己稍微對請求頭和請求體進行封裝了下,代碼如下:
import UIKit
import Alamofire
typealias SuccessBlock = (NSData)->Void
typealias FaileBlock = (NSError)->Void
class NetWorkManager: NSObject{
var? ? ? ?? webData:? ? ? ? ? ? ? ? ? ? NSMutableData!//接受的網絡數據
var? ? ? ?? currentService:? ? ? ? ? ?? String = String()//調用的服務
var? ? ? ?? currentAction:? ? ? ? ? ? ? String = String()//調用服務的接口
var? ? ? ?? successBlock:? ? ? ? ? ? ?? SuccessBlock?//成功后的委托
var? ? ? ?? fauleBlock:? ? ? ? ? ? ? ?? FaileBlock?//失敗的委托
func postRequest(service:String,action:String,paramValues:String,success:SuccessBlock){
self.successBlock = success
self.currentService = service
self.currentAction = action
let URL = getURL(service, action: action)//封裝了一個方法,用于拼接URL
//toSoapMessage(action,pams)用于拼接消息體
let soapMsg:String = toSoapMessage(action, pams: paramValues)
//getMutableRequest()設置請求頭的信息
let mutableURLRequest: NSMutableURLRequest = getMutableRequest(action, URL: URL, soapMsg: soapMsg)
Alamofire.request(mutableURLRequest).responseData { response in
if let successful = self.successBlock{
successful(response.data!)
}else{
//調用請求失敗的委托
}
}
}
//設置請求頭
func getMutableRequest(action:String,URL:NSURL,soapMsg:String)->NSMutableURLRequest{
let mutableURLRequest: NSMutableURLRequest = NSMutableURLRequest(URL:URL)
mutableURLRequest.setValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
let soapAction = kNameSpace+action
print("\(soapAction)")
mutableURLRequest.setValue(soapAction, forHTTPHeaderField: "SOAPAction")
mutableURLRequest.setValue("\(soapMsg.characters.count)", forHTTPHeaderField: "Content-Length")
mutableURLRequest.HTTPMethod = "POST"
mutableURLRequest.HTTPBody = soapMsg.dataUsingEncoding(NSUTF8StringEncoding)
return mutableURLRequest
}
//拼接URL,“?op=”這個破玩意兒,讓我寫成“/”,坑死我了(在地址欄中會自動轉換為“?op=”,代碼不行!!!!)。
func getURL(service:String,action:String)->NSURL{
let urlStr = kURLHeader+service+"?op="+action
return NSURL(string: urlStr)!
}
//拼接請求體
//拼接地址的文件,貼圖吧省事一點。。。