iOS中网络请求的使用(GET请求与POST请求)

GET&POST

GET和POST是两种最常用的与服务器进行交互的HTTP方法
GET
语意是获取指定URL的资源。
将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者只用“?”连接,各变量之间使用“&”连接。
貌似不安全,因为在传输过程中,数据被放在请求的URL中。
传输的数据量小,这主要是因为受URL长度限制。
POST
POST的语意说向指定URL的资源添加数据。
将数据放在数据体中,按照变量和值相对应的方式,传递到action所指向URL。
所有数据对用户来说不可见。
可以传输大量数据,上传文件只能使用POST。

GET请求示例

http://localhost//login.php?username=zhangsan&password = zhang
localhost:本地主机
ogin.php:资源名称
语意:从本地主机的login.php资源获取(操作)指定用户名和密码的登陆情况。

POST请求示例
http://localhost/login.php
localhost:本地主机
/login.php:资源名称
语义:向本地主机的login.php资源添加用户名和密码,并获得登陆情况。
提示:用户名和密码包装在网络请求的数据体中,在URL中不可见.

在浏览器中判断GET&POST请求
因为POST请求会向服务器发送数据体,因此在刷新页面时会出现提示窗口。
而GET请求不会向服务器发送数据体,因此没有提示。
从请求的本质而言,GET请求要比POST请求更安全,效率更高。

利用Firebug轻松查看POST请求的内容
开发网络应用时,用浏览器跟踪URL的返回结果是开发的重要辅助手段。

iOS网络发送请求的步骤
1.实例化URL(网络资源)
2.根据URL建立URLRequest(网络请求)
    默认为GET请求
    对于POST请求,需要创建请求的数据体。
3.利用URLConnection发送网络请求(建立连接)。
4.获得结果

NSURLConnection提供了两个静态方法可以直接同步或异步的方式向服务器发送网络请求。
同步请求
sendSynchronousRequest:returningResponse:error:
异步请求:
sendAsynchronousRequest:queue:completionHandler:

网络传输之二进制数据流

在网络请求过程中,接受数据的过程实际上是通过
NSURLConnectionDataDelegate来实现的,常用代理方法包括:

服务器开始返回数据,准备工作
- (void)connection:didReceiveResponse:

收到服务器返回的数据(本方法会被调用多次)
- (void)connection:didReceiveData:

数据接收完毕,做数据的最后处理
- (void)connectionDidFinishLoading:

网络连接错误
- (void)connection:didFailWithError:

让NSURLConnectionDataDelegate异步执行
[connection   setDelegateQueue:[NSOperationQueue  alloc] init]

使用代理的优缺点
缺点:
代理方法多,比较分散。
要处理一个请求,需要在很多地方编写代码。
不利于逻辑实现、代码编写、调试、维护以及扩展。
尤其当存在多个请求会变得非常麻烦。

优点:
下载较大文件时,代理的作用将无可替代。

将数据写入文件

//1.打开文件
     NSFileHandle  *fp = [NSFileHandle              fileHandleForWritingAtPath:self.downloadPath];
//2.如果文件不存在
if (fp  == nil){
//直接将数据写入文件
             [data  writeToFile:self.down.downloadPath  atomically:YES];
         }else{
//如果文件已经存在,移动到文件末尾
             [fp  seekToEndOfFile];
//追加数据文件
            [fp  writeData:data];
//关闭文件
            [fp  closeFile];
}
时间: 2024-12-16 12:45:39

iOS中网络请求的使用(GET请求与POST请求)的相关文章

iOS开发——网络编程OC篇&(三)数据请求

一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; 3 NSURL *url=[NSURL URLWithString:urlStr]; 4 5 // 2.创建请求对

iOS中UIWebView的一个需求:获得js图片请求完成的回调时机

不久之前,项目中用到了UIWebView加载js的功能,之前使用webView都是简单使用,没考虑很多与js交互的地方,虽然现在项目完成了,但是回头看看这方面的知识还是有些茫然,在此记录一点,然后后续如果有用更多的话再来进行补充. 需求 封装个view,提供给开发者使用,暴露两个方法以供调用: 1.是调用initWithXXX进行初始化位置等等参数配置: 2.调用loadH5PageWithSuccessBlock:failureBlock:让view中的webView加载H5页面显示出来即可.

iOS中JSON解析和XML解析的区别

iOS中网络传输的格式可粗略的分为XML和JSON两种,具体的传输方式又可分为GET和POST. 其中XML格式是最早出现的,但是由于复杂,并且占用字节数相对较大,故不太适合移动端,后来简化为JSON格式. JSON本身的数据结构只有字典和数组两种,在IOS5以后出现了原生解析,而之前则有SBJson和JsonKit第三方库解析. SBJson和JsonKit的特点: 1.第三方库解析SBJson是所有解析效率里面最低的,之所以能够广泛普及,是因为其简单,封装的低耦合性,可以快速抽离出一个类,在

ios中封装网络请求类

ios中封装网络请求类 #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 #import "UseXmlParser.h" //判断是否联网 #import "Reachability.h" //sbJson,判断json的解析 #import "JSON.h" @implementation JS

iOS中使用block进行网络请求回调

iOS中使用block进行网络请求回调 HttpRequest.h // // HttpRequest.h // UseBlockCallBack // // Created by Michael on 2/13/14. // Copyright (c) 2014 EIMS. All rights reserved. // #import <Foundation/Foundation.h> typedef void (^FinishBlock)(NSString *dataString); @

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对info.plist文件进行配置. 如何配置,请参考:

ios开发网络学习:一:NSURLConnection发送GET,POST请求

#import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> /** 注释 */ @property (nonatomic, strong) NSMutableData *resultData; @end @implementation ViewController #pragma mark ---------------------- #pragma mark la

iOS开发网络篇—GET请求和POST请求

iOS开发网络篇—GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; 3 NSURL *url=[NSURL URLWithString:u

iOS开发网络请求——大文件的多线程断点下载

iOS开发中网络请求技术已经是移动app必备技术,而网络中文件传输就是其中重点了.网络文件传输对移动客户端而言主要分为文件的上传和下载.作为开发者从技术角度会将文件分为小文件和大文件.小文件因为文件大小比较小导致传输所需时间少传输就快,因此不太容易影响用户体验,可用的技术就多.而大文件因为文件大小比较大导致传输时间长,因此就需要考虑到各种用户体验,比如避免在上传下载文件过程中阻塞主线程影响用户体验,就需要使用到多线程技术:为了给用户友好的进度提示,因此又需要开发中跟踪数据上传和下载数据的变化:为