簡體   English   中英

如何從Swift調用Rest Web服務

[英]How to call rest web service from swift

我正在嘗試遵循一個教程-失敗了,並且在堆棧上發現了一些代碼,因此在Swift中進行REST API調用決定改為嘗試這種方法。 以下代碼是復制並粘貼(我知道!),但更改了URL,但我似乎在控制台上而不是JSON上顯示了錯誤-錯誤在很大程度上沒有幫助0x0000000000000000

JSON似乎會打印到瀏覽器窗口中,因此我不完全確定這種方法可能出什么問題? 請問有人可以提供一些幫助,為什么這可能不起作用?

謝謝

    var url : String = "http://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=d6e995dee02d313a28ed4b799a09b869"
    var request : NSMutableURLRequest = NSMutableURLRequest()
    request.URL = NSURL(string: url)
    request.HTTPMethod = "GET"

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
        var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
        let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary

        if (jsonResult != nil) {
            println(jsonResult);
        } else {
            // couldn't load JSON, look at error
            println(error);
        }
    })

問題是調用以JSONP而不是JSON返回數據

如果使用正確的JSON(例如http://ip.jsontest.com)進行測試,您的代碼就可以正常運行

要使其與Flickr一起使用,您必須對其進行如下修改:

var json_str:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)


json_str = json_str.substringFromIndex(14)
json_str = json_str.substringToIndex(json_str.length-1)

let new_data:NSData = json_str.dataUsingEncoding(NSUTF8StringEncoding)!


var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(new_data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary

if (jsonResult != nil) {
    println(jsonResult);
} else {
    // couldn't load JSON, look at error
    println(error);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM