iOS —— ASIFormDataRequest
2015-09-29 17:30
513 查看
ASIHTTPRequest类库中的ASIFormDataRequest是实现HTTP协议中的处理POST表单的很好的类库。使用起来非常简单。
下面简要总结其用法。
在说明之前先需要了解HTTP请求的Get和Post方法。
Get方法一般是从服务器获取数据,而Post方法主要是向服务器传输一些数据。
Get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到完整的URL请求。ASIHTTPRequest类主要完成Get请求。
Post方法是将表单内各个字段与其内容放置在HTML HEADER内传送到ACTION属性所指的URL地址。用户看不到这个过程。
ASIFormDataRequest类主要完成Post请求。关于ASIHTTPRequest类库的安装配置详见《ASIHTTPRequest的环境配置和使用示例》
[objc] view
plaincopy
1,构造请求
需要包含头文件:#import "ASIFormDataRequest.h"
ASIFormDataRequest *request;
request=[ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://www.tekuba.net"]];
//构造请求
[request setPostValue:emailFiled.text forKey:@"Mail"];
[request setPostValue:accountFiled.text forKey:@"UserAccount"];//帐户
[request setPostValue:[self md5:passwordFiled.text] forKey:@"PassWord"];//密码
[request setDelegate:self];
//配置代理为本类
[request setTimeOutSeconds:10];
//设置超时
[request setDidFailSelector:@selector(urlRequestFailed:)];
[request setDidFinishSelector:@selector(urlRequestSucceeded:)];
[request startSynchronous];//同步传输
//[request startAsynchronous];//异步传输
2,实现数据处理方法
[objc] view
plaincopy
//连接失败
-(void)urlRequestFailed:(ASIHTTPRequest *)request
{
NSError *error =[request error];
NSLog(@"%@",error);
NSLog(@"连接失败!");
UIAlertView * alt=[[UIAlertView alloc] initWithTitle:@"提示" message:@"连接失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];
[alt show];
[alt release];
}
//请求成功
-(void)urlRequestSucceeded:(ASIHTTPRequest *)request
{
NSData *data=[request responseData];
NSXMLParser *parser=[[NSXMLParser alloc] initWithData:data];
NSLog(@"data length = %d",[data length]);
NSLog(@"xml data = %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
[parser setDelegate:self];
[parser parse];//进入解析
}
下面简要总结其用法。
在说明之前先需要了解HTTP请求的Get和Post方法。
Get方法一般是从服务器获取数据,而Post方法主要是向服务器传输一些数据。
Get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到完整的URL请求。ASIHTTPRequest类主要完成Get请求。
Post方法是将表单内各个字段与其内容放置在HTML HEADER内传送到ACTION属性所指的URL地址。用户看不到这个过程。
ASIFormDataRequest类主要完成Post请求。关于ASIHTTPRequest类库的安装配置详见《ASIHTTPRequest的环境配置和使用示例》
[objc] view
plaincopy
1,构造请求
需要包含头文件:#import "ASIFormDataRequest.h"
ASIFormDataRequest *request;
request=[ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://www.tekuba.net"]];
//构造请求
[request setPostValue:emailFiled.text forKey:@"Mail"];
[request setPostValue:accountFiled.text forKey:@"UserAccount"];//帐户
[request setPostValue:[self md5:passwordFiled.text] forKey:@"PassWord"];//密码
[request setDelegate:self];
//配置代理为本类
[request setTimeOutSeconds:10];
//设置超时
[request setDidFailSelector:@selector(urlRequestFailed:)];
[request setDidFinishSelector:@selector(urlRequestSucceeded:)];
[request startSynchronous];//同步传输
//[request startAsynchronous];//异步传输
2,实现数据处理方法
[objc] view
plaincopy
//连接失败
-(void)urlRequestFailed:(ASIHTTPRequest *)request
{
NSError *error =[request error];
NSLog(@"%@",error);
NSLog(@"连接失败!");
UIAlertView * alt=[[UIAlertView alloc] initWithTitle:@"提示" message:@"连接失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];
[alt show];
[alt release];
}
//请求成功
-(void)urlRequestSucceeded:(ASIHTTPRequest *)request
{
NSData *data=[request responseData];
NSXMLParser *parser=[[NSXMLParser alloc] initWithData:data];
NSLog(@"data length = %d",[data length]);
NSLog(@"xml data = %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
[parser setDelegate:self];
[parser parse];//进入解析
}
相关文章推荐
- echarts最新版怎么在项目中使用,针对requireJs路径问题
- 关于StoryBoard的使用(2)两个UIViewController之间的Present
- 《UNIX环境高级编程》示例代码中apue.h头文件的配置
- 03Android UiAutomator UiDevice API 详细介绍
- Servlet RequestDispatcher需要注意的情况
- IOS UI 笔记整理回顾
- XML::Parser perl module is required for intltool错误
- 最大子列和CT 01-复杂度2 Maximum Subsequence Sum
- android四种更新UI的方法
- iOS UILabel一行字设置不同的字体
- NavigationBar和UINavigationController一样是一个容器
- ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏
- master and slave have equal MySQL server UUIDs 解决方法
- UITableView之LOL英雄展示
- 如何隐藏RibbonBar的QAT QuickAccessToolBar
- 使用 xcodebuild 从 archive 导出 ipa
- EasyUI - Tabs
- 将标准输入复制到标准输出
- ios开发之UIImageView
- easyUI-->datagrid事件问题