ios – AFNetworking和Swift

我正在尝试使用 swift获取 JSON响应.
我嗅到请求和响应 – >一切还好
但是返回值总是为零.
let httpClient = AppDelegate.appDelegate().httpRequestOperationManager as AFHTTPRequestOperationManager;

    let path = "/daten/wfs";
    let query = "?service=WFS&request=GetFeature&version=1.1.0&typeName=ogdwien:AMPELOGD&srsName=EPSG:4326&outputFormat=json".stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding);

    func successBlock(operation: AFHTTPRequestOperation!,responseObject: AnyObject!) {
        println("JSON: " + "\(responseObject)")
    }

    func errorBlock(operation: AFHTTPRequestOperation!,error:NSError!) {
        println("Error: " + error.localizedDescription)
    }

    let urlString = "\(path)" + "/" + "\(query)"
    println("urlString: " + httpClient.baseURL.absoluteString + urlString)

我也试过这样:

httpClient.GET(urlString,parameters: nil,success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) -> Void in
            println("Success")
            println("JSON: " + "\(responseObject)")
        },failure:{ (operation: AFHTTPRequestOperation!,error:NSError!) -> Void in
            println("Failure")
        })

…但是responseObject总是似乎为零

[编辑]
也许原因是我的AppDelegate中可能出错的初始化:

var httpRequestOperationManager: AFHTTPRequestOperationManager? // JAVA SERVER Client

class func appDelegate() -> AppDelegate {
    return UIApplication.sharedApplication().delegate as AppDelegate
}

func configureWebservice() {
    let requestSerializer = AFJSONRequestSerializer()
    requestSerializer.setValue("1234567890",forHTTPHeaderField: "clientId")
    requestSerializer.setValue("Test",forHTTPHeaderField: "appName")
    requestSerializer.setValue("1.0.0",forHTTPHeaderField: "appVersion")

    let responseSerializer = AFJSONResponseSerializer()

    AFNetworkActivityIndicatorManager.sharedManager().enabled = true

    // ##### HTTP #####
    let baseURL = NSURL(string: "http://data.wien.gv.at");
    httpRequestOperationManager = AFHTTPRequestOperationManager(baseURL: baseURL))

    httpRequestOperationManager!.requestSerializer = requestSerializer
    httpRequestOperationManager!.responseSerializer = responseSerializer
}

任何建议我做错了什么?

亲爱的,史蒂夫

解决方法

Swift与Objective-C代码完全兼容,所以您的问题与Swift本身无关.在AFNetworking中,responseObject有时可以为零.其中包括:

> A 204未返回任何内容状态代码,
>如果输出流设置为写入文件,
>如果验证期间的错误不是NSURLErrorCannotDecodeContentData(例如不可接受的内容类型)

查看#740#1280了解更多信息.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...