IOS HTTP GET POST学习笔记
2015-10-08 01:36
615 查看
NSString *urlStr = [NSStringstringWithFormat:@"http://192.168.1.104:8080/MJServer/login?username=%@&pwd=%@",
username, pwd];
// 转码
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// URL里面不能包含中文
NSURL *url = [NSURL URLWithString:urlStr];
// 2.2.创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求
request.timeoutInterval = 5; // 设置请求超时
// 2.3.发送请求
[self sendAsync:request];
NSLog(@"---------已经发出请求");
/**
* 发送异步请求的方式1: 类方法,
block
*/
- (void)sendAsync:(NSURLRequest *)request
{
NSOperationQueue *queue = [NSOperationQueue mainQueue];
[NSURLConnection sendAsynchronousRequest:request queue:queuecompletionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
{ // 当请求结束的时候调用 (拿到了服务器的数据, 请求失败)
// 隐藏HUD (刷新UI界面, 一定要放在主线程, 不能放在子线程)
[MBProgressHUD hideHUD];
/**
解析data :
{"error":"用户名不存在"}
{"error":"密码不正确"}
{"success":"登录成功"}
*/
if (data) { // 请求成功
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:dataoptions:NSJSONReadingMutableLeaves error:nil];
NSString *error = dict[@"error"];
if (error) { // 登录失败
[MBProgressHUD showError:error];
} else { // 登录成功
NSString *success = dict[@"success"];
[MBProgressHUD showSuccess:success];
}
} else { // 请求失败
[MBProgressHUD showError:@"网络繁忙, 请稍后再试"];
}
}];
}
/**
* 发送异步请求的方式2: start方法, 代理
*/
- (void)sendAsync2:(NSURLRequest *)request
{
NSURLConnection *conn = [NSURLConnection connectionWithRequest:requestdelegate:self];
[conn start]; // 异步执行
}
![](http://images.cnitblog.com/blog/277701/201305/27105813-05771415217f4d09a0d1c4784c676523.png)
POST 方法
// 2.2.创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求
request.timeoutInterval = 5; // 设置请求超时
request.HTTPMethod = @"POST"; // 设置为POST请求
// 通过请求头告诉服务器客户端的类型
[request setValue:@"ios" forHTTPHeaderField:@"User-Agent"];
// 设置请求体
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@",
username, pwd];
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
username, pwd];
// 转码
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// URL里面不能包含中文
NSURL *url = [NSURL URLWithString:urlStr];
// 2.2.创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求
request.timeoutInterval = 5; // 设置请求超时
// 2.3.发送请求
[self sendAsync:request];
NSLog(@"---------已经发出请求");
/**
* 发送异步请求的方式1: 类方法,
block
*/
- (void)sendAsync:(NSURLRequest *)request
{
NSOperationQueue *queue = [NSOperationQueue mainQueue];
[NSURLConnection sendAsynchronousRequest:request queue:queuecompletionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
{ // 当请求结束的时候调用 (拿到了服务器的数据, 请求失败)
// 隐藏HUD (刷新UI界面, 一定要放在主线程, 不能放在子线程)
[MBProgressHUD hideHUD];
/**
解析data :
{"error":"用户名不存在"}
{"error":"密码不正确"}
{"success":"登录成功"}
*/
if (data) { // 请求成功
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:dataoptions:NSJSONReadingMutableLeaves error:nil];
NSString *error = dict[@"error"];
if (error) { // 登录失败
[MBProgressHUD showError:error];
} else { // 登录成功
NSString *success = dict[@"success"];
[MBProgressHUD showSuccess:success];
}
} else { // 请求失败
[MBProgressHUD showError:@"网络繁忙, 请稍后再试"];
}
}];
}
/**
* 发送异步请求的方式2: start方法, 代理
*/
- (void)sendAsync2:(NSURLRequest *)request
{
NSURLConnection *conn = [NSURLConnection connectionWithRequest:requestdelegate:self];
[conn start]; // 异步执行
}
![](http://images.cnitblog.com/blog/277701/201305/27105813-05771415217f4d09a0d1c4784c676523.png)
POST 方法
// 2.2.创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求
request.timeoutInterval = 5; // 设置请求超时
request.HTTPMethod = @"POST"; // 设置为POST请求
// 通过请求头告诉服务器客户端的类型
[request setValue:@"ios" forHTTPHeaderField:@"User-Agent"];
// 设置请求体
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@",
username, pwd];
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
相关文章推荐
- mstcpip.h
- HTTP错误码。。超级有用
- 文本传输协议HTTP包
- [网络]Unity的Socket通讯_2_数据传输
- 基于 HTML5 的 3D 网络拓扑树呈现
- 呼叫中心;网络电话
- 实现仿微信拍照和选取相片(转自网络)
- ViewPager+Fragment基本使用方法(转自网络)
- 网络直播课解决方案
- http状态码302,303,307的区别
- 神秘的40毫秒延迟与 TCP_NODELAY
- BZOJ [BeiJing2006]狼抓兔子 【网络流】
- curl获取https加密协议请求返回json数据进行信息获取
- [网络]Unity的Socket通讯_1_客户端
- 基于HTML5的3D网络拓扑自动布局
- javascript,第一个基于node.js的Http服务
- TCP三次握手及其背后的缺陷
- HttpClient模拟http请求
- 理解VMWare的三种网络连接模式(bridged、NAT、host-only)
- 为什么IP地址不能用MAC地址来代替?