- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在修复现有项目中的错误。问题是 AFHTTPClient 期望有效的 JSON 响应,但服务器返回一些乱码,如“”\”操作完成\””(所有引号和括号都在返回中)。这导致操作失败,并命中失败 block ,因为它无法解析响应。尽管如此,服务器仍返回状态代码 200,并且很高兴操作已完成。
我有一个像这样扩展 AFHTTPClient 的类(从我的 .h 文件中执行)
@interface AuthClient : AFHTTPClient
//blah blah blah
@end
在我的实现文件中,类被初始化如下:
- (id)initWithBaseURL:(NSURL *)url{
if (self = [super initWithBaseURL:url]) {
self.parameterEncoding = AFFormURLParameterEncoding;
self.stringEncoding = NSASCIIStringEncoding;
[self setDefaultHeader:@"Accept" value:@"application/json"];
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
}
return self;
}
我正在做的调用是在上面提到的类中完成的,并且是这样发生的:
- (void)destroyToken:(NSString *)token onCompletion:(void (^)(BOOL success))completion onFailure:(void (^)(NSError *error))failure{
[self postPath:@"TheServerURL" parameters:@{@"token": token} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSError *error;
//Do some stuff
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//Don't want to be here.
}];
}
在失败 block 内,错误在错误对象的 _userInfo 部分中返回为:
[0] (null) @"NSDebugDescription": @"JSON 文本未以数组或对象开头,并且未设置允许片段的选项。"
错误代码为 3480。
通过谷歌搜索,我了解到我需要设置类似 NSJSONReadingAllowFragments 的内容,但我不确定当前设置的方式/位置。有人有什么想法吗?
最佳答案
听起来响应根本不是 JSON。那么,为什么不直接接受 HTTP 响应本身,而不是尝试像 JSON 一样处理它呢?
如果您提交一个 JSON 格式的请求,但只想返回文本响应,使用 AFNetworking 2.0,您可以执行如下操作:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:urlString parameters:@{@"token":token} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *responseString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"responseString: %@", string);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
或者,在 1.x 中:
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
client.parameterEncoding = AFJSONParameterEncoding;
NSMutableURLRequest *request = [client requestWithMethod:@"POST" path:path parameters:@{@"token" : token}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"response: %@", string);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[client enqueueHTTPRequestOperation:operation];
关于ios - 在 AFJSONRequestOperation 中接受无效的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19965151/
我想按顺序执行一系列 AFJSONRequestOperation,并且能够在失败时中断队列。 目前我的做法并不靠谱,因为有时下一次手术会得到机会开始。 我有一个单例来调用我的 api 端点 AFJS
使用 AFNetworking 的请求: NSOperationQueue *queue = [[NSOperationQueue alloc] init]; [queue setMaxC
我正在尝试从服务于 JSON 的 Web 服务获取一些数据。但是我不知道我的代码出了什么问题。它看起来很简单,但我无法获得任何数据。 这是代码: NSURLRequest *request = [NS
一整天都被困在这个问题上,并尽快寻求帮助来解决这个问题。任何帮助都会很棒。谢谢:-) 缺少的引号 从网络上得到这个 AFJSONRequestOperation 请求,它很好地解决了一个关键错误:某些
我无法确定管理应用程序 SQLite 数据库更新的最佳方式(使用 Core Data) 当我的应用程序启动时,它会访问服务器以确定哪些表需要更新。然后,我为每个表调用服务。一旦我为每个对象取回 JSO
我有一个 NSOperation,Authenticate,它通过服务器进行身份验证。 我有另一个操作,类型为 AFJSONRequestOperation 的 fetchImage,它依赖于 Aut
我使用 AFNetworking 将数据发送到删除 Web 服务,并使用以下 block : self.operation = [AFJSONRequestOperation JSONRequestO
我有以下运行良好的代码,但我需要对其进行更多控制,尤其需要在 0.9 中开始使用 Reachability 代码。 NSString *urlString = [NSString stringWith
我正在尝试使用 AFJSONRequestOperation 从 JSON 提要中提取少量数据。 以下代码可以很好地提取 url,并且在打印 stringURL 时,它会打印出正确的 url。但是,我
我正在修复现有项目中的错误。问题是 AFHTTPClient 期望有效的 JSON 响应,但服务器返回一些乱码,如“”\”操作完成\””(所有引号和括号都在返回中)。这导致操作失败,并命中失败 blo
我已经实现了 AFNetworking 框架,但是我试图找出一种在单独的类中使用 AFJSONRequestOperation 函数并从我的个人 View Controller 调用它的方法。 我所做
我刚开始在 iOS 中使用 block ,我认为这可能是我问题的症结所在。 我只想构建一个简单的静态 DataManager 类,它的唯一工作就是从我的 Restful 服务中获取数据。 我会从我所有
我正在使用 AFNetworking 将 json 数据发布到我的网络服务并获得 json 响应。但是现在我还想向这些 POST 添加多部分表单数据。如果我这样做(即使没有我首先添加的参数),完成 b
我正在尝试使用 AFNetworking 和 AFJSONRequestOperation 发送授权 header 。如果我在 setAuthorizationHeaderWithToken 之后 N
将json数据发送到服务器并希望使用AFNetworking从服务器获取正确的response.statusCode 服务器: // Helper method to send a HTTP resp
我正在使用 AFNetworking 库检索 JSON 数据,并想添加一个完成 block ,如下所示: -(void)getData{ NSString *link=@"http://loc
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://twitter.c
The following code is taken from this tutorial 我以前使用过这个片段,但我以前从未注意到这个问题。数组内容的 NSLog 在委托(delegate)方法中
我一直试图在将请求分派(dispatch)到需要 OAuth 身份验证的基于 REST 的服务的特定实例中掌握 AFHTTPClient。使用 GTMOAuth 创建 OAuth 身份验证没有问题。
我在第 6 行的这段代码中收到上述警告,并且 userInfo 在该 block 中也变为 nil。请提出一些建议来消除此警告和 userInfo 问题。 AFHTTPClient *httpClie
我是一名优秀的程序员,十分优秀!