iOS网络基础

Demo

#import "SDViewController.h"

@interface SDViewController ()
@property (weak, nonatomic) IBOutlet UITextField *userName;
@property (weak, nonatomic) IBOutlet UITextField *password;

@end

@implementation SDViewController

/**
 *  网络请求步骤
 *  1、URL 确定资源
 *  NSString *urlStrl = @"";
 *  NSURL *url = [NSURL URLWithString:urlStrl];
 *
 *  (1)GET   URL中包含参数
 *  (2)POST  URL中包含参数
 *
 *  2、建立请求 URLRequest
 *  (1)    GET 不需要对请求参数做处理
 *          URLRequest
 *
 *  (2)    POST 需要在请求中包装参数, 指定HTTP方法和HTTP数据体
 *       NSMutableURLRequest
 *      HTTPMethod = @"POST"
 *       HTPPBody = 包含登录信息的二进制数据
 *  3、发送请求
 *       !!!在实际开发中,所有的网络请求都是异步的
 *      NSURLConnection sendAsynchronousRequest
 *       在请求的异步方法中,对接收到的数据进行处理!
 */

//登陆按钮点击事件
- (IBAction)loginBtnClick:(id)sender
{
//    [self getLoginWithUserName:self.userName.text andPassword:self.password.text];
    [self postLoninWithUserName:self.userName.text andPassword:self.password.text];
}

/** GET请求登陆*/
- (void)getLoginWithUserName:(NSString *)userName andPassword:(NSString *)password
{
    //1、url -- 准备资源
    NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login.php?username=%@&password=%@",userName,password];
    NSURL *url = [NSURL URLWithString:urlStr];

    //2、创建网络请求
    //URLRequest请求默认是GET
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    //3、发送网络请求
    //所有的网络请求都是使用异步方法
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        // 1> 将返回的二进制数据,转换成字符串
        // (1) 将二进制数据转换成字符串没有直接的类方法,需要alloc initWithData
        // (2) 提示:在开发网络时,如果需要跟踪网络返回的具体内容,经常会先将data转换成字符串输出!
        // 转换成字符串的方式,在调试中经常使用!
        NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"result -- %@",result);

        NSString *respond = [NSString stringWithFormat:@"respond -- %@",response];
        NSLog(@"respond -- %@",respond);

        //JSON转换,格式是和NSDictionary的快速包装方式非常像
        //将JSON转换成字典
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:NULL];

        NSLog(@"dict -- %@",dict);
    }];

}

/** POST请求登陆*/
- (void)postLoninWithUserName:(NSString *)userName andPassword:(NSString *)password
{
    //1、url  准备资源
    NSString *urlStr = @"http://localhost/login.php";
    NSURL *url = [NSURL URLWithString:urlStr];

    //2、request,POST方法,需要建立一个可变的请求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    request.HTTPMethod = @"POST";  //设置请求方式

    //2.1数据体
    NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@",userName,password];
    //将字符串转换成二进制数
    request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];

    //3、发送请求
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        // 1> 将返回的二进制数据,转换成字符串
        // (1) 将二进制数据转换成字符串没有直接的类方法,需要alloc initWithData
        // (2) 提示:在开发网络时,如果需要跟踪网络返回的具体内容,经常会先将data转换成字符串输出!
        // 转换成字符串的方式,在调试中经常使用!
        NSLog(@"response - %@",response);

        NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"result -- %@",result);

        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:NULL];
        NSLog(@"dict -- %@",dict);

        NSError *erro  = connectionError;
        NSLog(@"erro -- %@",erro);

         }];

}

@end

  

时间: 2024-10-31 06:42:39

iOS网络基础的相关文章

(五十九)iOS网络基础之UIWebView简易浏览器实现

[UIWebView网络浏览器] 通过webView的loadRequest方法可以发送请求显示相应的网站,例如: NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"]; // 创建请求数据 NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 向服务器发送请求 [self.webView loadRequest:request]; 通过使用searchBa

iOS学习--网络基础

Get & Post请求 •网络访问的四个步骤 –地址 –请求 –连接 –处理结果 •iOS网络处理常用类 –NSURL(地址) –NSRequest[GET]& NSMutableURLRequest[POST](请求) –NSConnection(连接) •实现NSURLConnectionDataDelegate代理方法可以接收服务器响应数据(处理结果) 关于代理的方法: •代理方法存在的问题 –代理方法较多,比较分散 –要处理一个请求,需要在很多地方编写代码 –不利于逻辑实现.代码

iOS开发 - 第04篇 - 网络 - 01 - NSOperation & 网络基础

实现:Cell图片下载程序 源代码下载地址:点击打开链接 1.Cell图片下载程序 1.1 界面 1.2 基本思路 1> Storyboard中添加导航控制器,根控制器为UITableViewController 2> 新建HMAppsViewController,关联 3> 导入app.plist,新建HMApp,提供类方法,利用KVC,字典转模型 4>HMAPPViewController中懒加载模型数组 5> 实现ViewController数据源方法,设置Cell的t

iOS网络编程开发—网络编程基础

iOS网络编程开发—网络编程基础 一.网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐:QQ音乐

网络基础

3.1 网络基础 001 问题:为什么要学习网络编程? 回答:(1)网络编程是一种实时更新应用数据的常用手段 (2)网络编程是开发优秀网络应用的前提和基础 002 网络基本概念 2-1 客户端(就是手机或者ipad等手持设备上面的APP) 2-2 服务器(远程服务器-本地服务器) 2-3 请求(客户端索要数据的方式) 2-4 响应(需要客户端解析数据) 2-5 数据库(服务器的数据从哪里来) 3.2 Http 001 URL 1-1 如何找到服务器(通过一个唯一的URL) 1-2 URL介绍 a

浅谈iOS网络编程之一入门

计算机网络,基本上可以抽象是端的通信.实际在通讯中会用到不同的设备,不同的硬件中,为了能友好的传输信息,那么建立一套规范就十分必要了.先来了解一些基本概念 了解网络中传输的都是二进制数据流.  2.了解网络编程概念. 认识网络: // 网络概念 <1> 经常见到的: 网卡/网线/IP地址/子网掩码/路由地址/DNS服务器地址 作用? // <2> 容易忽略的:MAC地址/数据/数据包 // <3> 网络编程的概念:客户端/服务器/请求/响应/数据流 // 网络是数据交互

iOS开发基础知识--碎片1

iOS开发基础知识--碎片1  一:NSString与NSInteger的互换 NSInteger转化NSString类型:[NSString stringWithFormat: @"%d", NSInteger]; NSString转化 NSInteger类型:NSInteger = [NSString intValue]; *其它几个同理 [NSString boolValue].[NSString floatValue].[NSString doubleValue] 二:Obje

iOS开发基础知识--碎片2

iOS开发基础知识--碎片2 六:获得另一个控件器,并实现跳转 UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *registerViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"registerView

iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理

本章内容 ●    iOS应用中的网络错误源 ●    检测网络的可达性 ●    错误处理的经验法则 ●    处理网络错误的设计模式 到目前为止,我们所介绍的iPhone与其他系统的网络交互都是基于一切正常这个假设.本章将会放弃这个假设,并深入探究网络的真实世界.在真实世界中,事情是会出错的,有时可能是非常严重的错误:手机进入与离开网络.包丢掉或是延迟:网络基础设施出错:偶尔用户还会出错.如果一切正常,那么编写iOS应用就会简单不少,不过遗憾的是现实并非如此.本章将会探讨导致网络操作失败的几