IOS与服务器交互POST 和 GET

背景介绍:
        当开发IOS应用时,IOS端会和服务器进行交互。IOS端会向服务器传送数据,如:登录功能,注册功能,发送用户填写信息到服务器等功能,都会用到POST方法。也会从服务器获取数据,就会用到GET方法。接下来,我来讲述一下IOS端与服务器的交互过程:

       当在某种需求下,我需要向服务器发送数据

NSURL *url = [NSURL URLWithString:@"http://xx/xx?user_id=xx&token=xx"];//设置请求的url
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    request.HTTPMethod = @"POST";//POST请求
    request.timeoutInterval = 60;
    NSData *data = [NSJSONSerialization dataWithJSONObject:dic_test options:0 error:nil];//将发送数据转化成JSON(NSData类型)
    request.HTTPBody = data;
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//设置发送内容类型为 JSON
    NSURLConnection *connect = [NSURLConnection connectionWithRequest:request delegate:self];
    [connect start];
    [m_respond_data setLength:0];//设置接收POST结果的变量(NSMutableData类型)每次发送前先清空数据

 

           实现NSURLConnectionDelegate的代理方法

// 当服务端提供了有效的数据来创建NSURLResponse对象时,代理会收到connection:didReceiveResponse:消息。
// 这个代理方法会检查NSURLResponse对象并确认数据的content-type,MIME类型,文件 名和其它元数据。
// 需要注意的是,对于单个连接,我们可能会接多次收到connection:didReceiveResponse:消息;这咱情况发生在
// 响应是多重MIME编码的情况下。每次代理接收到connection:didReceiveResponse:时,应该重设进度标识
// 并丢弃之前接收到的数据。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
    NSLog(@"%@",[res allHeaderFields]);
}
//接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次,将返回的数据全部接收到一起
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [m_respond_data appendData:data];
}
//数据传完之后调用此方法
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSDictionary *respond = [NSJSONSerialization JSONObjectWithData:m_respond_data options:NSJSONReadingMutableLeaves error:nil];
    //根据数据信息将界面作出相应的处理
    if ([[respond objectForKey:@"errcode"] isEqualToNumber:[NSNumber numberWithInt:0]])
    {
    }
}
//网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法
-(void)connection:(NSURLConnection *)connection
 didFailWithError:(NSError *)error
{
    NSLog(@"%@",[error localizedDescription]);
}

   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值