从服务器Objective C或Swift下载文件

用户名

如何将音频文件从服务器下载到用户的手机以在应用程序中使用?当我转到网站链接时,JSON代码会像这样显示

[{"name":"Lets Party","path":"http:\/\/domain.us\/\/\/audios\/\/Lets Party.wav"},
{"name":"Let You Know","path":"http:\/\/domain.us\/\/\/audios\/\/Let You Know.wav"},
{"name":"OMG","path":"http:\/\/domain.us\/\/\/audios\/\/OMG.wav"}]

我尝试获取JSON并在Swift中进行转换,但是这使我的应用程序崩溃了。但是,当我放置博客JSON时,它可以完美运行,不会崩溃。如何在Swift或Objective-C中做到这一点?

编辑:我现在收到一条错误消息。

当前代码:

        let urlPath = "http://www.domain.us/"

        let url = NSURL(string: urlPath)

        let session = NSURLSession.sharedSession()

        let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in

            if error != nil {
                println(error)
            } else {
                let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
                println(jsonResult)
            }

        })

        task.resume()
    }

错误信息:

2014-11-12 20:07:23.652 JSON Practice[6073:284290] CFNetwork SSLHandshake failed (-9847)
2014-11-12 20:07:23.874 JSON Practice[6073:284290] CFNetwork SSLHandshake failed (-9847)
2014-11-12 20:07:24.054 JSON Practice[6073:284290] CFNetwork SSLHandshake failed (-9847)
2014-11-12 20:07:24.055 JSON Practice[6073:284290] NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9847)
Error Domain=NSURLErrorDomain Code=-1200 "The operation couldn’t be completed. (NSURLErrorDomain error -1200.)" UserInfo=0x7fc0ba656020 {NSErrorFailingURLStringKey=https://www.domain.us/, NSErrorFailingURLKey=https://www.makemeip.us/, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9847, NSUnderlyingError=0x7fc0ba52ebb0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1200.)"}
里奥·达布斯
//
//  ViewController.swift
//  Test2
//
//  Created by adm on 11/14/14.
//  Copyright (c) 2014 Dabus.Tv. All rights reserved.
//

import UIKit
import Foundation
import AVFoundation

class ViewController: UIViewController {
    @IBOutlet weak var strFiles: UITextView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        if let url = NSURL(string: "http://www.anyurl.com/") {
            if let loadedString = String(contentsOfURL: url) {
                // file string was sucessfully loaded
                // add the file path + / + filename + extension
                let localUrl = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String) + "/" + "data" + ".db"  // Documents URL as String (local storage path)
                // check local file path url
                if let checkLocalUrl = NSURL(fileURLWithPath: localUrl) {
                    let savedFile = loadedString.writeToURL(checkLocalUrl, atomically: true, encoding: NSUTF8StringEncoding, error: nil) // write to url savedFile will true or false
                    if savedFile {
                        // do whatever
                        self.strFiles.text = "\(self.strFiles.text)path: \(checkLocalUrl)\n"
                        self.strFiles.text = "\(self.strFiles.text)file was sucessfully saved\n"
                    }

                    // lets create an ARRAY with your string
                    var arrayLines = ""
                    if let myArrayParsed = loadedString.JSONParseArray() {
                        for elem:AnyObject in myArrayParsed {
                            let name = elem["name"] as String
                            let path = elem["path"] as String
                            arrayLines = "Name: \(name), Path: \(path)"

                            self.strFiles.text = "\(self.strFiles.text)\(arrayLines)\n"
                        }
                    } else {
                        // could not parse array

                    }

                } else {
                    // could not check local url
                }
            } else {
                // could not load string contents from url
            }
        } else {
            // invalid url
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
extension String {
    func JSONParseArray() -> [AnyObject]? {
        if let data = self.dataUsingEncoding(NSUTF8StringEncoding) {
            if let array = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(0), error: nil)  as? [AnyObject] {
                return array
            }
        } else {
            return nil
        }
        return [AnyObject]()
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Swift从服务器下载文件

来自分类Dev

使用swift和objective-c下载文件

来自分类Dev

从服务器以html下载文件

来自分类Dev

从服务器下载文件(不下载?)

来自分类Dev

从服务器下载文件(不下载?)

来自分类Dev

从FTP服务器下载文件时损坏文件

来自分类Dev

通过脚本从文件服务器下载文件

来自分类Dev

从服务器文件夹下载文件

来自分类Dev

从C#的REST服务下载文件

来自分类Dev

Android-从服务器下载文件终止

来自分类Dev

在Android中使用IntentService从服务器下载文件

来自分类Dev

MVC从远程服务器下载文件

来自分类Dev

使用ASP MVC从远程服务器下载文件

来自分类常见问题

在React中如何从服务器下载文件?

来自分类Dev

JSP-允许用户从服务器下载文件

来自分类Dev

从基于Flask的Python服务器下载文件

来自分类Dev

使用Java从服务器下载文件

来自分类Dev

下载文件(如果服务器上存在)

来自分类Dev

使用angularjs从服务器下载文件

来自分类Dev

如何从服务器下载文件(sso和https)

来自分类Dev

Ruby Net :: FTP-从服务器下载文件

来自分类Dev

通过网站从PHP服务器下载文件

来自分类Dev

从服务器Struts 2.0下载文件

来自分类Dev

php从其他服务器下载文件

来自分类Dev

如何从服务器或本地Xampp下载文件?的PHP

来自分类Dev

从服务器Laravel和reactjs下载文件

来自分类Dev

使用Flask和JS从服务器下载文件

来自分类Dev

在React中如何从服务器下载文件?

来自分类Dev

如何通过javascript从tomcat服务器下载文件?