Objective c OSX-AFX即使使用JSON序列化程序集也可以发送文本
我对Objective c OSX-AFX即使使用JSON序列化程序集也可以发送文本,objective-c,macos,swift,afnetworking,Objective C,Macos,Swift,Afnetworking,我对AFNetworking和AFJSONRequestSerializer有问题。我尝试访问一个API,请求包含一个text/plain头。这是我的密码: class BaseService { var manager: AFHTTPRequestOperationManager! init() { manager = AFHTTPRequestOperationManager() manager.responseSerializer = AF
AFNetworking
和AFJSONRequestSerializer
有问题。我尝试访问一个API,请求包含一个text/plain
头。这是我的密码:
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
的请求。但我想知道你是否被一条错误信息误导了,它说:
请求失败:不可接受的内容类型:text/html
如果你知道了,这并不是说请求的内容类型不可接受,而是说请求失败了,因为响应是text/html
。这是一个非常常见的问题:如果试图创建JSON响应的服务器代码由于某种原因失败,有时错误消息不是JSON,而是HTML
我建议在POST
方法的failure
块中添加以下内容,以便查看此text/html
响应是什么:
if operation.responseData != nil {
println(NSString(data: operation.responseData, encoding: NSUTF8StringEncoding))
}
这样,如果您从服务器收到一条文本错误消息(例如,请求格式不正确或您收到了什么),您将能够读取返回的HTML响应。如果您没有解释问题是什么,我们如何知道问题是什么?