我在 google 上搜索了用于使用 RESTful Web 服务的不同方法和库。但是当我尝试旧库时,它们中的大多数要么已经过时,要么无法工作。这可能是因为其中一些已停产且与新 SDK 不兼容。
我已经尝试过 SBJSON、ASIHTTP、stig 和 jsonframework,但它们似乎都不起作用。
目前在 iOS 中使用哪些库来使用 RESTful Web 服务?如果任何人都可以使用相同的库提供示例教程的链接,那将会很有帮助。
我在 google 上搜索了用于使用 RESTful Web 服务的不同方法和库。但是当我尝试旧库时,它们中的大多数要么已经过时,要么无法工作。这可能是因为其中一些已停产且与新 SDK 不兼容。
我已经尝试过 SBJSON、ASIHTTP、stig 和 jsonframework,但它们似乎都不起作用。
目前在 iOS 中使用哪些库来使用 RESTful Web 服务?如果任何人都可以使用相同的库提供示例教程的链接,那将会很有帮助。
试试 RestKit:http: //restkit.org/
它是众所周知的,流行的,使用 XML 以及 JSON 并与 Core Data(响应 NSManagedObjects 映射)一起使用,这使得作为本地缓存的后端非常好。
为什么不使用 NSURLConnection 之类的 iOS API 类?(我认为需要iOS5或更高版本)
例如,您可以像这样调用 REST GET 操作:
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[req setHTTPMethod:GET];
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];//for https
connection = [[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES];
其中 url 应该是一个指向你的 rest 服务操作 url 的 NSURL 对象。并声明相应的委托方法:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
code = [httpResponse statusCode];
NSLog(@"%@ %i",@"Response Status Code: ",code);
[data setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d {
[self.data appendData:d];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[[[UIAlertView alloc] initWithTitle:@"Error"
message:nil
delegate:nil
cancelButtonTitle:@"ok"
otherButtonTitles:nil] show];
self.connection = nil;
self.data = nil;
}
连接、数据和代码可以是实现类的局部变量。在这些变量中,您将存储建立的连接、接收到的 JSON 数据(或其他)以及响应 http 代码(如 200、404)。
最后,如果您计划调用安全的 REST 服务,请不要忘记包含 authenticationchallenge 委托。
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
//set the user and password loged in
NSString *username = @"username";
NSString *password = @"password";
NSURLCredential *credential = [NSURLCredential credentialWithUser:username
password:password
persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
希望这可以帮助!
使用内置NSURLSession
然后NSJSONSerialization
使用 Github 的Mantle框架将 JSON 字典映射到您的自定义 ObjC 对象。