ios网络编程(入门级别)-- 基础知识

在学习ios的过程中,停留在UI控件很长时间,现在正在逐步的接触当中!!!!!!在这个过程中,小编学到了一些关于网络编程知识,并且有感而发,在此分享一下:

关于网络请求的重要性我想不用多说了吧!!!对于移动客户端来说,网络的重要性不言而喻,常见的网络请求有GET, POST,今天来看一下两种网络请求的实现方式。

第一部分   小编的理解

一、两种网络请求--POST请求与GET请求的异同(这里小编只讨论的是异步链接)

GET的语义是获取指定URL上的资源,将数据按照Variable = Value的形式,添加到action所指向的URL后面,并且两者使用"?"连接,各个变量之间使用"&"连接。

POST的语法是指定资源“追加/添加”资源,将数据放在数据体上,按照变量和值相对应的方式,传递到action所指向的URL。

1. GET请求的接口会包含参数部分,参数会作为网址的一部分,服务器地址与参数之间通过 ? 来间隔。POST请求会将服务器地址与参数分开,请求接口中只有服务器地址,而参数会作为请求的一部分,提交后台服务器。

2. GET请求参数会出现在接口中,不安全;而POST请求相对安全,所有数据对用户不可见。

3.GET传输的数据量小,主要受URL长度限制;而POST可大量传输数据,上传文件只能使用POST。

4.虽然GET请求和POST请求都可以用来请求和提交数据,但是一般的GET多用于从后台请求数据,POST多用于向后台提交数据。

二、 网络请求的步骤
 1. 确定地址NSURL
 2. 建立请求NSURLRequest
 3. 建立并启动连接NSURLConnection
     等待网络处理~~~~
 4. 通过代理方法处理网络请求
    遵守协议:NSURLConnectionDataDelegate

三、 网络代理方法
 1. 接收到服务器的响应,服务器要传数据,客户端做接收准备
 2. 接收服务器传输的数据,可能会多次执行
 3. 接收数据完成,做后续处理
 4. 服务器请求失败,原因很多(网络环境等等)
 5. 向服务器发送数据,此方法仅适用于POST,尤其上传文件

四、 GET方法
    在NSURL中,指定参数(如果有,也可以不指定参数),例如:http://www.baidu.com

五、 POST方法
    定义一个可变的URLMutableRequest
    1) 时长
        [request setTimeoutInterval:2.0f];
    2) 请求方式(默认是GET)
        [request setHTTPMethod:@"POST"];
    3)  数据体
        NSData *body = [string dataUsingEncoding:NSUTF8StringEncoding];
        [request setHTTPBody:body];
 
 六、 同步方法——必须要某个网络请求完成后,才能后续执行,例如网银登录
    看到方法参数中包含__autoreleasing字样,在定义的对象名前面加上“&”
    NSURLResponse *response = nil;
    NSError *error = nil;
    // 同步操作没有完成,后面的代码不会执行
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    1> 接收到数据,表示工作正常
    2> 没有接收到数据,但是error为nil,表示接收到空数据
       通常服务器没有对该请求做任何响应
    3> error不为空,表示请求出错

七、 异步方法
     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *reponse, NSData *data, NSError *error) {
 
        // 请求完成后的处理
     }];
 
    异步方法不用等待网络请求结束

第二部分   小编的部分demo

 1 // 1. 确定地址NSURL
 2     NSString *urlString = [NSString stringWithFormat:@"http://XXXXXXX.php?XXXX=%@&XXXX=%@", XXX, XXX;
 3     urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 4     NSURL *url = [NSURL URLWithString:urlString];
 5     // 2. 建立请求NSURLRequest
 6     NSURLRequest *request = [NSURLRequest requestWithURL:url];
 7     // 3. 建立并启动连接NSURLConnection
 8     NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
 9     // 启动连接,异步连接请求
10     [conn start];
11     // 服务器通知准备,准备中转数据
12     self.serverData = [NSMutableData data];

GET方法

 1 // 1. 确定地址NSURL
 2     NSString *urlString = [NSString stringWithFormat:@"http://XXXXX.php"];
 3     NSURL *url = [NSURL URLWithString:urlString];
 4     // 2. 建立请求NSURLRequest(POST)
 5     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
 6     // 1) 请求方式
 7     [request setHTTPMethod:@"POST"];
 8     // 2) 数据体
 9     // 因为dataUsingEncoding已经实现了转码
10     NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@", userName, pwd];
11     NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
12     [request setHTTPBody:body];
13     // 3. 建立并启动连接NSURLConnection
14     NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
15     // 启动连接,异步连接请求
16     [conn start];
17     // 服务器通知准备,准备中转数据
18     self.serverData = [NSMutableData data];

POST方法

1 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{}
2 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{}
3 - (void)connectionDidFinishLoading:(NSURLConnection *)connection{}
4 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{}
5 - (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
6 {}

网络代理方法

小编能力有限,希望大牛来指点,不胜感激!!!!!!

时间: 2024-12-21 03:19:57

ios网络编程(入门级别)-- 基础知识的相关文章

socket网络编程的一些基础知识

源地址:http://blog.csdn.net/roger_77/article/details/1453049 目录: 1) 什么是套接字? 2) Internet 套接字的两种类型 3) 网络理论 4) 结构体 5) 本机转换 6) IP 地址和如何处理它们 7) socket()函数 8) bind()函数 9) connect()函数 10) listen()函数 11) accept()函数 12) send()和recv()函数 13) sendto()和recvfrom()函数 

java网络编程入门教程

网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.

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

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

[转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么? http://www.52im.net/thread-1732-1-1.html 1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖它.我们用微信和别

[转帖]脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手

脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手 http://www.52im.net/thread-1729-1-1.html 1.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道"三次"和"四次",但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方式,来对这个知识点进行"脑残式"讲解(哈哈),期望读者们可以更加简单.直观地理解TCP网络通信交互的本

Java学习笔记—第十二章 Java网络编程入门

第十二章  Java网络编程入门 Java提供的三大类网络功能: (1)URL和URLConnection:三大类中最高级的一种,通过URL网络资源表达方式,可以很容易确定网络上数据的位置.利用URL的表示和建立,Java程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端. (2)Socket:又称"套接字",用于描述IP地址和端口(在Internet中,网络中的每台主机都有一个唯一的IP地址,而每台主机又通过提供多个不同端口来提供多种服务).在客户/服务器网络中,当客

iOS网络编程--NSConnection的同步连接与异步连接

1 // 2 // ZFViewController.m 3 // 0628-表单验证 4 // 5 // Created by zfan on 14-6-28. 6 // Copyright (c) 2014年 zfan. All rights reserved. 7 // 8 9 #import "ZFViewController.h" 10 #import "MBProgressHUD+MJ.h" 11 12 @interface ZFViewControll

iOS网络编程(7) 第三方开源库-----&gt;AFNetworking

AFNetworking是一个为 iOS 和 Mac OSX 制作的令人愉快的网络库,它建立在URL 装载系统框架的顶层,内置在Cocoa里,扩展了强有力的高级网络抽象.它的模块架构被良好的设计,拥有丰富的功能,因此,使用起来,必定赏心悦目. @原文链接https://github.com/AFNetworking/AFNetworking,我在此基础上了点配置修改 @介绍 1.支持HTTP请求和基于REST的网络服务(包括GET.POST. PUT.DELETE等) 2.支持ARC 3.要求i

Unix网络编程 之 socket基础

基本结构 (这部分的地址均为网络地址<网络字节序>) 1.struct sockaddr:通用套接字地址结构 此结构用于存储通用套接字地址. 数据结构定义: typedef unsigned short sa_family_t; struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */ };    sa_fa

iOS网络编程笔记——Socket编程

一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是TCP/IP协议的一个十分流行的编程接口.一个socket由一个IP地址和一个端口号唯一确定.TCP/IP协议的传输层又有两种协议:TCP(传输控制协议)和UDP(用户数据报协议).TCP是基于连接的,而UDP是无连接的:TCP对系统资源的要求较多,而UDP少:TCP保证数据的正确性而UDP可能丢包: