我对 AFNetworking
和 AFJSONRequestSerializer
有疑问。我尝试访问 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/