objective-c - OSX - 即使设置了 JSON 序列化器,AFNetworking 也发送文本

标签 objective-c macos swift afnetworking

我对 AFNetworkingAFJSONRequestSerializer 有疑问。我尝试访问 API,请求包含 text/plain header 。这是我的代码:

class BaseService {
    var manager: AFHTTPRequestOperationManager!

    init() {
        manager = AFHTTPRequestOperationManager()
        manager.responseSerializer = AFJSONResponseSerializer()
        manager.requestSerializer = AFJSONRequestSerializer(writingOptions: NSJSONWritingOptions.allZeros)
    }
}

class UserService: BaseService {
    func startNewEntry(name: String) {
        let params = [
            "time_entry": [
                "description": name,
                "created_with": "fooBar"
            ]
        ]

        manager.POST(
            "endpoint",
            parameters: params,
            success: { (operation, response) -> Void in

                let json = JSON(response)

                println("OK")
                println(json)

                Context.shared.entries.getFromJSON(json)

            }) { (operation, error) -> Void in
                println("-- ERROR --")
                println(operation)
                println(error)
            }
    }

你知道这个问题吗?

最佳答案

不,此代码将创建内容类型为 application/json 的请求。但我想知道您是否被一条错误消息误导了:

Request failed: unacceptable content-type: text/html

如果您明白了,那并不是告诉您请求的内容类型 Not Acceptable ,而是因为响应text/html 请求失败了。这是一个非常常见的问题:如果尝试创建 JSON 响应的服务器代码由于某种原因失败,有时错误消息不是 JSON,而是 HTML。

我建议在 POST 方法的 failure block 中添加以下内容,以便查看此 text/html 响应是什么:

if operation.responseData != nil {
    println(NSString(data: operation.responseData, encoding: NSUTF8StringEncoding))
}

这样,如果您从服务器收到文本错误消息(例如,请求格式不正确或您有什么问题),您将能够读取返回的 HTML 响应。

关于objective-c - OSX - 即使设置了 JSON 序列化器,AFNetworking 也发送文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28844563/

相关文章:

objective-c - 操作无法完成。没有这样的文件或目录: but the file exists

ios - AFNetworking调用clearAuthorizationHeader

objective-c - MacOSX 10.8,xcode 4.6.1 错误 cocoa : "Color type user defined runtime attributes on OS X versions prior to 10.7"

iphone - uitableview 在滚动到顶部时自动更新

iphone - 管理 iphone 项目中的构建目标变量

objective-c - 更改 NSButton 的背景颜色

iphone - 如何有效地迭代 NSSet (Objective-C) - 核心数据中的对多关系表示?

macos - 快速抓取 "My Card"CNContact

swift - swift3 (xcode) 中的旋转和约束

swift - 如何使用 ** 用于指数使用 @infix func **( )?