Jam*_*mes 12 json objective-c ios afnetworking xcode5
我AFNetworking
在Objective-C中设置了一个JSON帖子,并使用以下代码将数据发送到服务器:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"name": deviceName, @"model": modelName, @"pin": pin};
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"Content-Type" forHTTPHeaderField:@"application/json"];
[manager POST:@"SENSORED_OUT_URL" parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"JSON: %@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"Error: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)
我通过相同的请求收到信息,并希望将数据发送到 NSString
.我该AFNetworking
怎么做呢?
Aar*_*ger 28
responseObject
是NSArray或NSDictionary.你可以在运行时检查isKindOfClass:
:
if ([responseObject isKindOfClass:[NSArray class]]) {
NSArray *responseArray = responseObject;
/* do something with responseArray */
} else if ([responseObject isKindOfClass:[NSDictionary class]]) {
NSDictionary *responseDict = responseObject;
/* do something with responseDict */
}
Run Code Online (Sandbox Code Playgroud)
如果你真的需要JSON的字符串,可以通过查看获得operation.responseString
.
在这种情况下,当Web服务响应时JSON
,AFNetworking
将为您执行序列化,并且responseObject
很可能是一个NSArray
或NSDictionary
对象.
与包含JSON
内容的字符串相比,这样的对象应该对您更有用.
在我的情况下,它看起来像(也许它可以帮助)
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:url parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *jsonDict = (NSDictionary *) responseObject;
//!!! here is answer (parsed from mapped JSON: {"result":"STRING"}) ->
NSString *res = [NSString stringWithFormat:@"%@", [jsonDict objectForKey:@"result"]];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//....
}
];
Run Code Online (Sandbox Code Playgroud)
也很好检查响应对象的类型(如/sf/answers/1537371181/答案)