验证客户端证书并从服务器获取响应

时间:2016-06-27 11:37:39

标签: ios swift nsurlsession

我正致力于从客户端服务器(ratin24 API)获取数据。 API基本上在认证后工作意味着我有一个证书,我用NSURLSession“didReceiveChallenge”委托方法对它进行认证。一切都工作正常,但现在问题是我只有标题部分作为回应而不是BOTY。那么如何从那里获得实际数据。我在请求体中传递XML参数,响应应该是XML但只有头,所以请帮助我在这种情况下如何获取BODY数据。

let xmlString = "<?xml version='1.0' encoding='ISO-8859-1'?><TICKETANYWHERE><COUPON VER='1.0'><TEMPLATELIST /></COUPON></TICKETANYWHERE>"
let xmlData = xmlString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

let request = NSMutableURLRequest(URL: NSURL(string: "My URL")!)
request.HTTPMethod = "POST"
request.HTTPBody = xmlData
request.addValue("text/html; charset=ISO-8859-1", forHTTPHeaderField: "Content-Type")
struct SessionProperties {
    static let identifier : String! = "url_session_background_download"
}


let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
let backgroundSession = NSURLSession(configuration: configuration, delegate:self as? NSURLSessionDelegate, delegateQueue: NSOperationQueue.mainQueue())

let downloadTask = backgroundSession.downloadTaskWithRequest(request){ (data, response, error) -> Void in
            let httpResponse = response as! NSHTTPURLResponse
            let statusCode = httpResponse.statusCode

            if (statusCode == 200) {
                print("Everyone is fine, file downloaded successfully.")
            }


        }
        downloadTask.resume()

响应数据(仅限标题)正文? :

status code: 200, headers {
    Connection = close;
    "Content-Length" = 23113;
    "Content-Type" = "text/html; charset=ISO-8859-1";
    Date = "Mon, 27 Jun 2016 11:36:12 GMT";
    Server = "Apache/2.2.15 (CentOS)";
}

1 个答案:

答案 0 :(得分:0)

响应对象不应包含正文数据。 NSURLResponse对象仅包含元数据,例如状态代码和标头。实际的正文数据应该在数据任务的NSData对象中,或者在提供的下载任务文件中。

请注意,对于下载任务,第一个参数是NSURL,而不是NSData对象。 NSURL包含磁盘上文件的位置,您必须立即从中读取完成处理程序中的响应数据或将文件移动到永久位置。