IOS_网络请求_get+post+同步+异步
来源:互联网 发布:淘宝怎么关闭私人定制 编辑:程序博客网 时间:2024/04/28 05:58
H:/0726/01_Get+Post+代理实现_ViewController.h
H:/0726/01_Get+Post+代理实现_ViewController.m
H:/0726/02_Post请求+静态方法实现+推荐_ViewController.h
H:/0726/02_Post请求+静态方法实现+推荐_ViewController.m
//// ViewController.h// Get & Post Request//// Created by apple on 13-7-26.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface ViewController : UIViewController <NSURLConnectionDataDelegate>// 用户名@property (weak, nonatomic) IBOutlet UITextField *userNameText;// 密码@property (weak, nonatomic) IBOutlet UITextField *passwordText;// Get登录- (IBAction)getLogin:(id)sender;// Post登录- (IBAction)postLogin:(id)sender;@end
H:/0726/01_Get+Post+代理实现_ViewController.m
// ViewController.m// Get & Post Request// Created by apple on 13-7-26.// Copyright (c) 2013年 itcast. All rights reserved.#import "ViewController.h"@interface ViewController (){ // 从服务器返回的数据,别的方法中要用到 NSMutableData *_serverData;}@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad];}// 响应按钮点击,GET 登录- (IBAction)getLogin:(id)sender{ // 1. 确定地址URL // 注意:你们在调试的时候,需要知道服务器的ip地址,注意用login.php // 在定义Get的URL的时候,千万不要忘记在地址栏拼接参数 NSString *urlString = [NSString stringWithFormat:@"http://169.254.68.33/~apple/itcast/login.php?username=%@&password=%@", _userNameText.text, _passwordText.text]; NSLog(@"字符串:%@", urlString); // 输入中文的时候,出问题了! // 如果有中文,需要对地址字符串进行%的UTF8转码,才可以使用!!! // stringByAddingPercentEscapesUsingEncoding 记住要“加百分号”! NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSLog(@"URL:%@", url); // 2. 通过URL,建立请求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 3. 通过请求,建立连接,并设置代理为当前控制器 NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self]; // 4. "启动"连接 start [conn start];}// 响应按钮点击,POST 登录- (IBAction)postLogin:(id)sender{ // 整个步骤的顺序和Get方法是一样的,不过需要注意的是请求的参数细节处理! // 1. 确定地址URL NSString *urlString = @"http://169.254.68.33/~apple/itcast/login.php/"; // 这里不需要加百分号!,因为没有中文 NSURL *url = [NSURL URLWithString:urlString]; // 2. 建立可变的URL请求 // 1)建立可变的URL请求,是要修改请求,所以要用NSMutableURLRequest NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 2) 建立请求超时时间 [request setTimeoutInterval:5.0]; // 3) 指定请求方法是“POST”,注意,如果是POST,必须去指定HTTP方法。 // post字符串不区分大小写,POST [request setHTTPMethod:@"post"]; // 4) 建立请求"数据体",因为要把这个数据体传送给服务器。 NSString *bodyString = [NSString stringWithFormat:@"username=%@&password=%@", _userNameText.text, _passwordText.text]; NSLog(@"数据体字符串:%@", bodyString); // 将生成的字符串,用指定的编码转换成数据Data NSData *body = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; NSLog(@"%@", body); // 5) 设置可变请求的HTTPBody [request setHTTPBody:body]; // 3. 建立连接,并设置代理为当前控制器 NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self]; // 4. 启动连接 [conn start];}#pragma mark - 连接代理方法,didReceiveResponse- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ NSLog(@"开始接受服务器的返回请求");}// 代理的这个方法会被多次调用,所以我们需要定义一个成员变量来记录完整的数据!- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ // 做接收数据的处理
H:/0726/02_Post请求+静态方法实现+推荐_ViewController.h
//// ViewController.h// Get & Post Request//// Created by apple on 13-7-26.// Copyright (c) 2013年 itcast. All rights reserved.//#import <UIKit/UIKit.h>@interface ViewController : UIViewController// 用户名@property (weak, nonatomic) IBOutlet UITextField *userNameText;// 密码@property (weak, nonatomic) IBOutlet UITextField *passwordText;// 同步登录- (IBAction)syncLogin:(id)sender;// 异步登录- (IBAction)asyncLogin:(id)sender;@end
H:/0726/02_Post请求+静态方法实现+推荐_ViewController.m
// ViewController.m// Get & Post Request// Created by apple on 13-7-26.// Copyright (c) 2013年 itcast. All rights reserved.#import "ViewController.h"@interface ViewController (){}@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad];}// 建立Post登录请求- (NSURLRequest *)postLoginRequest{ // 整个步骤的顺序和Get方法是一样的,不过需要注意的是请求的处理! // 1. 确定地址URL NSString *urlString = @"http://169.254.68.11/~apple/itcast/login.php/"; // 这里不需要加百分号!,因为没有中文 NSURL *url = [NSURL URLWithString:urlString]; // 2. 建立可变请求 // 1)建立可变请求,是要修改请求,所以要用NSMutableURLRequest NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 2) 建立请求超时时间 [request setTimeoutInterval:5.0]; // 3) 指定请求方法是“POST”,注意,如果是POST,必须去指定HTTP方法。 // post字符串不区分大小写,POST [request setHTTPMethod:@"post"]; // 4) 建立请求"数据体",因为要把这个数据体传送给服务器。 NSString *bodyString = [NSString stringWithFormat:@"username=%@&password=%@", _userNameText.text, _passwordText.text]; //NSLog(@"数据体字符串:%@", bodyString); // 将生成的字符串转换成数据 NSData *body = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; //NSLog(@"%@", body); // 5) 把数据体设置给请求 [request setHTTPBody:body]; // 返回了一个完整的用户登录请求 return request;}#pragma mark - 响应按钮的点击,同步请求- (IBAction)syncLogin:(id)sender{ // 1. 通过自定义的方法返回登录请求 NSURLRequest *request = [self postLoginRequest]; // 2. 开始同步连接 // 同步请求需要几个参数 // 1) 请求,已经准备好了 // 2) 响应,所为响应,就是服务器给你的响应 // 3) 错误,因为网络连接有可能出错。 // 在写网络访问程序的时候,一定要有出错处理,提醒用户。 NSURLResponse *response = nil; NSError *error = nil; // 同步请求是一定返回结果后才会继续的! NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; // 给一个填充错误的地址,有可能会延时网络访问时间 NSLog(@"访问完成"); // 3. 获取数据 // 可能会返回什么数据? // 1) 返回请求的结果!解码!!!!!解码成我们认识的字符串 // 2) 请求出现错误! // 3) 返回空数据! if (error != nil) { NSLog(@"访问出错:%@", error.localizedDescription); return; } if (data != nil) { NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // 用户登录成功之后的处理 if (string.integerValue > 0) { NSLog(@"登录成功"); // 这里可以用navigationcontroller push 出去 } else { NSLog(@"请重新输入"); } NSLog(@"返回的内容是:%@", string); } else { NSLog(@"没有接收到数据!"); }}// 响应按钮点击,通过连接的静态方法(和代码块)发送异步登录请求,推荐~取代代理方法- (IBAction)asyncLogin:(id)sender{ // 1. 通过自定义方法,获得登录请求 NSURLRequest *request = [self postLoginRequest]; // 2. 异步登录请求 // 1) 第一个参数:请求,我们已经有了 // 2) 第二个参数:队列?所谓队列,就是在线程上面需要执行的任务列表 // 3) BLOCK,是一个块代码。【需要我们自己制定参数!】
0 0
- IOS_网络请求_get+post+同步+异步
- IOS_同步请求、异步请求、GET请求、POST请求
- 网络请求 同步get 同步post 异步get 异步post
- 42.网络请求POST同步和异步
- iOS网络请求GET&POST,同步&异步
- iOS-网络-同步请求、异步请求、GET请求、POST请求
- 网络处理2-异步POST请求和同步请求
- 网络处理(2)-异步POST请求和同步请求
- 网络处理2-异步POST请求和同步请求
- iOS开发:网络请求之get、post同步异步请求
- 网络请求的get,post 方法,同步,异步请求
- 网络get/post请求异步同步请求回调
- okhttp 第三方 网络数据请求 异步get请求 和异步post请求 同步请求
- iOS 网络编程(HTTP 同步GET请求,同步POST请求,异步GET请求,异步POST请求)
- iOS 网络编程(HTTP 同步GET请求,同步POST请求,异步GET请求,异步POST请求)
- UI 网络请求(同步GET,同步POST,异步GET,异步POST)具体操作
- 常见的网络请求 同步GET, 同步POST, 异步GET, 异步POST
- IOS开发之NSURL网络请求,同步异步,GET,POST
- 黑马程序员:java基础知识(二)
- 时光轴
- 关于||和&&的一个有趣问题
- subsys_initcall
- Android输入法框架系统(上)
- IOS_网络请求_get+post+同步+异步
- android -- 蓝牙 bluetooth (一) 入门
- 多边形背景生成工具推荐-Trianglify
- HDU 最短路小小结(只涉及初级算法)
- android -- 蓝牙 bluetooth (二) 打开蓝牙
- PDB文件:每个开发人员都必须知道的
- debian 安装ruby +nginx+apache开发环境.
- Android Activity 生命周期的透彻理解
- The installer encountered an error copying files to the hard disk: [Errno 5] Input/output error