iOS网络开发基础--发送HTTP请求

一、一个HTTP请求的基本要素

1.请求URL:客户端通过哪个路径找到服务器

2.请求参数:客户端发送给服务器的数据

  • 如登录时需要发送的用户名和密码

3.返回结果:服务器返回给客户端的数据

  • 一般是JSON数据或者XML数据

二、基本的HTTP请求的步骤(移动客户端)

1.拼接"请求URL"
+ "?" + "请求参数"

  • 请求参数的格式:参数名=参数值
  • 多个请求参数之间用&隔开:参数名1=参数值1&参数名2=参数值2

2.发送请求

3.解析服务器返回的数据

  • JSON解析
  • XML解析

三、HTTP的通信过程

1.请求

1>
请求行 :
请求方法、请求路径、HTTP协议的版本

GET /MJServer/resources/images/1.jpg HTTP/1.1

2>
请求头 :
客户端的一些描述信息

  • User-Agent : 客户端的环境(软件环境)

3>
请求体 : POST请求才有这个东西

  • 请求参数,发给服务器的数据

2.响应

1>
状态行(响应行): HTTP协议的版本、响应状态码、响应状态描述

HTTP/1.1
200 OK

2>
响应头:服务器的一些描述信息

  • Content-Type : 服务器返回给客户端的内容类型
  • Content-Length : 服务器返回给客户端的内容的长度(比如文件的大小)

3>
实体内容(响应体)

  • 服务器返回给客户端具体的数据,比如文件数据

四、HTTP的请求方法

1.GET

1> 特点

  • 所有请求参数都拼接在url后面

2> 缺点

  • 在url中暴露了所有的请求数据,不太安全
  • url的长度有限制,不能发送太多的参数

3>
使用场合

  • 如果仅仅是向服务器索要数据,一般用GET请求

4>
如何发送一个GET请求

  • 默认就是GET请求

// 1.URL

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

// 2.请求

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3.发送请求

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

}];

2.POST

1> 特点

  • 把所有请求参数放在请求体(HTTPBody)中
  • 理论上讲,发给服务器的数据的大小是没有限制

2>
使用场合

  • 除开向服务器索要数据以外的请求,都可以用POST请求
  • 如果发给服务器的数据是一些隐私、敏感的数据,绝对要用POST请求

3>
如何发送一个POST请求

// 1.创建一个URL

请求路径

NSURL *url = [NSURL URLWithString:@"http://xxxxx"];

// 2.创建一个请求

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

// 设置请求方法

request.HTTPMethod = @"POST";

// 设置请求体 :
请求参数

NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", usernameText, pwdText];

// NSString --> NSData

request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];

五、NSMutableURLRequest的常用方法

1.设置超时

request.timeoutInterval = 5;

// NSURLRequest是不能设置超时的,因为这个对象是不可变的

六、URL转码

1.URL中不能包含中文,得对中文进行转码(加上一堆的%)

NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login?username=lisa&pwd=123"];

urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

// urlStr == @"http://localhost/login?username=%E5%96%9D%E5%96%9D&pwd=123"

时间: 2024-10-01 06:27:33

iOS网络开发基础--发送HTTP请求的相关文章

iOS网络开发基础--向服务器发送数据的方式

可以通过三种方式向服务器发送数据:NSURLRequest,NSMutableURLRequest,NSURLConnection 一.NSURLRequest向服务器发送同步或异步请求 举例:如何发送一个GET请求 * 默认就是GET请求 // 1.URL NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; // 2.请求 NSURLRequest *request = [NSURLRequest requestWi

iOS网络开发(5)请求的缓存

有网络请求的App有可能出现两个问题: 1)遇到网络不畅或数据量较大的情况下,会出现由于数据到达不及时使用不流畅的问题 2)频繁发送网络请求,可能造成没必要的流量产生以及拖累手机速度的问题 针对问题一,通常采用的策略是:延迟加载大数据的请求 针对问题二,通常采用适当的缓存策略,节省网络开销 延迟加载 在网络请求中,比较大的资源,如图片.视频等,需要做一些特殊处理以提升App的性能 如以下场景: 请求一个列表数据,每个数据包含:字符串.图片URL,tableView中需要显示这些数据 这里设计到多

IOS网络开发概述

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理

ios网络开发

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理

IOS网络开发NSURLSession详解(一)概述

原创blog,转载请注明出处blog.csdn.net/hello_hwc 我的IOS-SDK详解专栏,欢迎关注 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言: 这个IOS网络编程的系列计划6篇文章,NSURLSession3篇(一篇概述,一篇详细阐述三种task和delegate的使用,一篇阐述授权,证书等内容),网络的基础知识两篇(一篇REST API讲解已经写完了,一篇我会把写博客的过程中遇到的概念总结出来

iOS项目开发基础

  iOS项目开发基础 前沿:整理了一个项目开发基础,涉及到开发初期的必备条件.源码请点击github地址下载. 目录 一.封装网络请求 二.json转model 三.方法顺序 四.文件结构 五.UITableView自动布局 六.UITableViewHeaderFooterView复用 七.计算label内容大小 一.封装网络请求 1.封装get请求 + (void)get:(NSString *)url param:(NSString *)param success:(void (^)(N

ios网络学习------1get post异步请求

网络请求的步骤: get请求: #pragma mark - 这是私有方法,尽量不要再方法中直接使用属性,因为一般来说属性都是和界面关联的,我们可以通过参数的方式来使用属性 #pragma mark Get登录方法 - (void)loginWithGet:(NSString *)name pwd:(NSString *)pwd { //1确定地址NSURL NSString *urlString = [NSString stringWithFormat:@"www.baidu.com?user

iOS网络编程同步GET方法请求编程

iOS SDK为HTTP请求提供了同步和异步请求两种不同的API,而且可以使用GET或POST等请求方法.我们先了解其中最为简单的同步GET方法请求. 首先实现查询业务,查询业务请求可以在主视图控制器MasterViewController类中实现,其中MasterViewController.h代码如下: Java代码   #import <UIKit/UIKit.h> #import “NSString+URLEncoding.h” #import “NSNumber+Message.h”

iOS多线程与网络开发之发送接收服务器信息

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源码传送:http://dwz.cn/Nret1 A.搭建java服务器 使用eclipse.tomcat和struts2框架搭建一个简单的服务器