object-c的http post请求之 ASIFormDataRequest使用

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的环境配置和使用示例

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,实现数据处理方法
//连接失败
-(void)urlRequestFailed:(ASIHTTPRequest *)request
{
    NSError *error =[request error];
    NSLog(@"%@",error);
    NSLog(@"连接失败!");
    UIAlertView * alt=[[UIAlertView alloc] initWithTitle:@"提示" message:@"连接失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: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];//进入解析
}

转载本文请注明来自特酷吧并注明本文链接,本文地址:www.tekuba.net/program/269/

推荐阅读:

ASIHTTPRequest的环境配置和使用示例   XCode出现Undefined symbols for architecture armv7错误

IOS开发笔记(1)    IOS开发笔记(2)-序列化/反序列化   IOS开发笔记(3)-单例(Singleton)模式

IOS开发笔记(4)     android开发环境搭建详解     移动应用使用友盟统计反馈

IOS的多线程操作NSOperation    IOS协议与委托

IOS开发-KVO键值观察机制    IOS/mac系统使用微软雅黑等字体

IOS之Property List   IOS应用启动流程生命周期详解

IOS app应用启动图片制作   蒙特卡罗法求圆周率π(PI)

IOS摇一摇功能的实现   App应用程序提交到AppStore流程

IOS6引用的第三方静态库不支持armv7s错误   UITableView设置Section间距

IOS中以NSObject为父类的各类之间的父子继承关系图    IOS中多个UITextField的键盘处理

IOS UIDatePicker日期/时间选取器

实例:

IPhone之ASIFormDataRequest POST操作架构设计

//开启iphone网络开关
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:host]];

//超时时间
request.timeOutSeconds = 30;

//定义异步方法
[request setDelegate:self];

[request setDidFailSelector:@selector(requestDidFailed:)];

[request setDidFinishSelector:@selector(requestDidSuccess:)];

//用户自定义数据   字典类型  (可选)

request.userInfo = [NSDictionary dictionaryWithObject:method forKey:@"Method"];

//post的数据

[request appendPostData:[body dataUsingEncoding:NSUTF8StringEncoding]];
//开始执行
[request startAsynchronous];
//执行成功
- (void)requestDidSuccess:(ASIFormDataRequest *)request
{
//获取头文件
NSDictionary *headers = [request responseHeaders];
//获取http协议执行代码
NSLog(@"Code:%d",[request responseStatusCode]);
if ([delegate respondsToSelector:@selector(OARequestSuccessed:withResponse:WithData:withHeaders:)])
{
//执行委托操作  (架构设计   自选)
[delegate OARequestSuccessed:method withResponse:[request responseString] WithData:[request responseData] withHeaders:headers];
}
//清空
if (request)
{
[request release];
}
//关闭网络
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
//执行失败
- (void)requestDidFailed:(ASIFormDataRequest *)request{
//获取的用户自定义内容
NSString *method = [request.userInfo objectForKey:@"Method"];
//获取错误数据
NSError *error = [request error];
if ([delegate respondsToSelector:@selector(OARequestFailed:withError:)])
{
//执行委托 将错误数据传其他方式(架构设计   自选)
[delegate OARequestFailed:method withError:error];
}
if (request)
{
[request release];
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO
}
//执行成功函数
- (void)OARequestSuccessed:(NSString *)method withResponse:(NSString *)response WithData:(NSData *)data withHeaders:(NSDictionary *)headers
{
NSString *responseStr = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
//服务返回post后的数据
NSLog(@"response:\n%@",responseStr);
}
//执行失败函数
- (void)OARequestFailed:(NSString *)method withError:(NSError *)error
{
NSLog(@"Error:%@",error);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"出错了" message:@"网络连接失败, 请稍后重试." delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil];
[alert show];

[alert release];
}

  

object-c的http post请求之 ASIFormDataRequest使用,布布扣,bubuko.com

时间: 2024-10-17 17:52:02

object-c的http post请求之 ASIFormDataRequest使用的相关文章

Android实际开发之网络请求组件的封装(OkHttp为核心)

趁周末时间撸了两天代码,将OkHttp网络请求框架进行了一次简单封装,对于实际开发非常有用.. 此次封装主要针对我们经常使用的网络请求的步骤进行封装,在已有框架OkHttp的基础上进行实际开发的封装 发送一个网络请求,有以下三个功能模块: 一:request处理 二:OkHttp核心处理 三:callback处理 我们进行网络请求组件的封装也是根据这三大模块进行封装的,下面规划一下这次封装的一个思维导图: 根据以上思维导图,我们第一步,先进行request的封装: 以下是封装的一个CommonR

IOS开发使用NSURLConnection、NSURLSession、AFN、ASI四种方式实现HTTP请求

概括:HTTP请求可以使用NSURLConnection.NSURLSession.AFN.ASI等方式实现,其中又包括了get.post两种请求方式和同步.异步两种程序执行方式. NSURLConnection 1 get方式的同步请求 /** *  get同步请求 */ -(void) getSynch{ // 获取URL NSURL *url = [[NSURL alloc] initWithString:@"http://localhost:8070/MJServer/login?use

全局为每一个ajax请求都附带一个loading效果 .ajaxSend

描述: 在Ajax请求发送之前绑定一个要执行的函数,这是一个 Ajax Event. 添加的版本: 1.0.ajaxSend( handler(event, jqXHR, ajaxOptions) ) handler(event, jqXHR, ajaxOptions) 类型: Function() 被调用的函数. 每当一个Ajax请求即将发送,jQuery就会触发ajaxSend事件,在这个时间点所有处理函数都会使用.ajaxSend()方法注册并执行. 观察这种方法,建立一个基本的Ajax加

OC HTTPRequest GET和POST请求的代码封装

对于GET和PSOT请求我们在开发中会经常使用,所以对代码进行封装就可以做到事半功倍.下面就介绍下怎么对代码进行封装, 要求是: 1.要有网络成功和失败的blcok. 2.如果服务器传回的是 JSON 数据,自动解析;如果不是,直接返回二进制数据. 3.默认成功之后的block回调在主线程进行. 首先我们要创建一个类ZSNetworkTool,继承自NSObject,代码如下 #import <Foundation/Foundation.h> //定义别名 //成功回调类型:参数: 1. id

WorldWind源码剖析系列:下载请求类DownloadRequest

下载请求类DownloadRequest是各种下载请求的抽象基类,先派生出网络下载请求类WebDownloadRequest,再派生出地理空间下载请求类GeoSpatialDownloadRequest(抽象类),再派生出地形下载请求类TerrainDownloadRequest.这些类的类图如下. 抽象基类下载请求类DownloadRequest 抽象基类下载请求类DownloadRequest各个字段和属性的含义说明如下: internal static DownloadQueue Queu

Volley网络请求框架简析——Android网络请求框架(三)

题记-- 人来到这个世界上,只有两件事情,生与死, 一件事完了,另一件事还急什么? 有缘而来,无缘而去, 识自本心,见自本性 不起妄缘,无心无为 自由自在,动静自如 冷暖自知,则是修行 1.初始化一个消息请求队列以及网络请求工具类对象 /** * Created by androidlongs on 16/7/1. * 网络请求访问框架 */ public class VollyRequestUtils { /** * Volley框架使用工具类对象 */ private static Voll

ASIHTTPRequest框架使用(2)--发送异步请求

同步请求一般只是用在某个子线程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情况下异步请求用的多. ASIHTTPRequest和ASIFormDataRequest两个请求类都可以发送异步请求.ASIFormDataRequest继承了ASIHTTPRequest异步请求方法,所以重点介绍ASIHTTPRequest的异步请求. 1.借助Delegate处理请求 - (void)startRequest { NSString *strUrl = [[NSString a

spring aop 实现请求报文打印

利用spring aop 实现前端请求后台的参数打印. /* *=============================================================================================== * author: time: version: desc: * anear 2017/2/26 13:25 1.0 *==============================================================

ios开发中asihttprequest请求,汉字乱码问题的解决

首先,后台用的是统一的utf-8编码,我的ios端请求添加成员如下: //登陆成功下,可以保存到服务器 <span style="font-size:14px;"><strong> NSString *childName = nameTextField.text; //这里输入的是汉字,比如:蓝天 </strong></span> NSString *age = ageTextField.text; NSString *birthday