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了解更多信息.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...