关于Web服务Json / rest api / Nsurl连接

时间:2015-12-15 06:14:24

标签: ios web-services afnetworking

我开始学习Web服务,我使用一个url api获取数据并在我的表视图中显示。但我看到了一些教程 - 他们使用 NSURLConnection Rest API AFNetworking

我对所有类型都很困惑。我应该在上述类型中使用哪一个。对于我应该使用哪种类型的Web服务。而且我在SO中看到了一些使用同步或异步的疑问。因此,这是从URL获取数据的任何其他类型吗?

实际上对于所有网络服务,我应该使用哪些来获取数据和显示?

4 个答案:

答案 0 :(得分:2)

 -(void)JsonDataParsing
 {


    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) {
              //....
          }
     ];

 }

答案 1 :(得分:2)

首先,AFNetworking和NSURLConnection用于Mobile Side。 Rest API不是来自移动端。您在服务器端实现的Rest API,用于处理GUD,POST,PUT和DELETE等CRUD操作。

第三方图书馆可以帮助我们轻松完成工作。 Joda Time是非常受欢迎且值得信赖的图书馆。

AFNetworking发出异步网络请求。要了解有关它的更多信息,请访问AFNetworking

AFNetworking可以完成NSURLConnection所能做的一切。现在使用它将为您节省大量编写样板代码的时间!

答案 2 :(得分:1)

NSURLConnectionNSURLSession用于管理网络操作(如下载和上传),AFNetworking是使用这些2 API并添加了多线程/错误处理/网络可访问性的框架。 ...为了让您的生活更轻松,RESTful是客户端 - 服务器连接的体系结构,您可以在服务器端实现它,以易于使用的模型(JSON)将内容返回给客户端。

synchronous意味着你等待它完成其他任何事情,asynchronous意味着你只是启动它但不需要等待它,就像你对服务器和用户的请求仍然可以同时与您的UI进行交互,因此建议使用asynchronous task向服务器请求,然后仅更新synchronous中的用户界面

希望我的解释易于理解和纠正:)

答案 3 :(得分:1)

  

<强> NSURLConnection的

这使您可以通过提供URL请求对象来加载URL的内容。使用NSURLConnection,您可以使用回调块和同步加载异步的网址请求。见这个例子

NSURL *URL = [NSURL URLWithString:@"http://example.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

[NSURLConnection sendAsynchronousRequest:request
                                    queue:[NSOperationQueue mainQueue]
                        completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
     // ...
 }];

如需了解更多信息,请访问apple docs

  

<强> AFNetworking

这是在基础网址加载之上构建的第三方库。 这很容易通过pod安装并方便使用。请参阅下面的示例,例如我在我的应用中如何使用相同的

-(AFHTTPRequestOperationManager *)manager
{
    if (!_manager)
    {
        _manager = [AFHTTPRequestOperationManager manager];
        _manager.requestSerializer = [AFHTTPRequestSerializer serializer];
        _manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    }   
    return _manager;
}

上面我们正在初始化AFHTTPRequestOperationManager *manager

的实例
[self.manager POST:@"http://example.com" parameters:parameters

               success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSError *error;
         NSMutableDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:&error];
         // return response dictionary in success block
     }

               failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         // return error in failure block
     }]

上面的方法将异步加载数据,剩下的就是自解释。但是如果你想像同步请求那样阻止用户界面而不是使用反模式的[operation waitUntilFinished]。此处operationAFJSONRequestOperation的实例。