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 – AFNetworking和Swift全部内容,希望文章能够帮你解决ios – AFNetworking和Swift所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。