0
嘗試調用託管在Azure上的WCF服務,失敗並出現HTTP錯誤400. Web服務本質上充當我的Braintree(移動支付)服務器事物的一面。從Swift 2.0調用WCF(在Azure上)失敗,狀態碼爲400
下面是相關代碼:發生在
let soapEnvelope = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Header><Action s:mustUnderstand=\"1\" xmlns=\"http://schemas.microsoft.com/ws/2005/05/addressing/none\">http://tempuri.org/IService1/GenerateToken</Action></s:Header><s:Body><GenerateToken xmlns=\"http://tempuri.org/\" /></s:Body></s:Envelope>"
let soapEnvelopeLength = String(soapEnvelope.characters.count)
let clientTokenURL = NSURL(string: "http://xxx.xxx.net/Service1.svc")
let clientTokenRequest = NSMutableURLRequest(URL: clientTokenURL!)
let session = NSURLSession.sharedSession()
clientTokenRequest.HTTPMethod = "POST"
clientTokenRequest.HTTPBody = soapEnvelope.dataUsingEncoding(NSUTF8StringEncoding)
clientTokenRequest.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
clientTokenRequest.addValue(soapEnvelopeLength, forHTTPHeaderField: "Content-Length")
clientTokenRequest.addValue("http://tempuri.org/IService1/GenerateToken", forHTTPHeaderField: "soapAction")
let task = session.dataTaskWithRequest(clientTokenRequest, completionHandler: {data, response, error -> Void in
print(response)
let clientToken = String(data: data!, encoding: NSUTF8StringEncoding)
let brainTree = Braintree(clientToken: clientToken!)
if error != nil {
print(error)
}
})
task.resume()
失敗:
let task = session.dataTaskWithRequest(clientTokenRequest, completionHandler: {data, response, error -> Void in
我的SoapEnvelope幾乎是從WCF測試客戶端工具自動生成的XML的複製/粘貼。
我也試着用下面的SoapEnvelope,但仍得到一個400。結果clientToken保持零和B樹永遠不會初始化:
let soapEnvelope = "<?xml version=\"1.0\" encoding=\"utf-8\"><s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><GenerateToken xmlns=\"http://tempuri.org/\" /></s:Body></s:Envelope>"
任何想法?
感謝, 城邦