2016-06-27 39 views
0

クライアントサーバー(ratin24 API)からデータを取得しようとしています。 APIは基本的には認証後に1つの証明書があり、NSURLSession "didReceiveChallenge"デリゲートメソッドで認証されたことを意味します。すべてがうまくいっていますが、今問題になっているのは、ヘッダー部分だけが応答であるとは限りません。そこから実際のデータを取得する方法。リクエストボディに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)"; 
} 

答えて

0

応答オブジェクトにはボディデータが含まれていないと想定されます。 NSURLResponseオブジェクトには、ステータスコードやヘッダーなどのメタデータのみが含まれます。実際のボディデータは、データタスクの場合はNSDataオブジェクトに、ダウンロードタスクの場合は提供されたファイル内に存在する必要があります。

ダウンロードタスクの場合、最初のパラメータはNSDataオブジェクトではなくNSURLです。そのNSURLには、完了ハンドラ内の応答データをただちに読み取るか、ファイルを永続的な場所に移動する必要があるディスク上のファイルの場所が含まれています。

関連する問題