IOS学习笔记26—HTTP操作之ASIHTTPRequest(二)

来源:互联网 发布:淘宝商家条形码怎么填 编辑:程序博客网 时间:2024/04/29 05:02

利用ASIHTTPRequest也可以向服务器提交请求参数,今天就做一个登录的例子,客户端发送XML请求,然后得到服务端的响应,响应的结果是返回XML字符串。直接上代码吧,代码中有详细注释。

首先在.h文件中做如下声明:

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (retain,nonatomic) UIActivityIndicatorView *indicator;@property (retain, nonatomic) IBOutlet UITextField *userNameTextField;@property (retain, nonatomic) IBOutlet UITextField *passwordTextField;- (IBAction)login:(id)sender;@end

然后是.m实现文件(这里只列出了主要代码部分):

//使用异步请求并更新UI- (IBAction)login:(id)sender {    //弹出加载提示框    [self showToast:@"正在登陆..."];        /*执行登陆请求     服务端为跑在Tomcat上的一个Servelet     请求方式采用xml,格式如下:     <Document>        <User id ="xxx"  password=”xxx”/>     </Document>     请求结果返回一个XML字符串,这里的服务器地址我省略了,因为用的是以前一个项目的服务器,这里没法公开     */    __block ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://xxx/server/Login"]];        //构建可变字符串请求    NSMutableString *requestXML = [[NSMutableString alloc] init];    [requestXML appendString:@"<Document>"];    [requestXML appendString:@"<User id=\""];    [requestXML appendString:self.userNameTextField.text];    [requestXML appendString:@"\" "];    [requestXML appendString:@"password=\""];    [requestXML appendString:self.passwordTextField.text];    [requestXML appendString:@"\"/>"];    [requestXML appendString:@"</Document>"];        //将NSString类型转换成NSData类型,后面的参数为编码类型,这里是UTF-8    NSData *requestData = [requestXML dataUsingEncoding:NSUTF8StringEncoding];    //使用ASIHTTPRequest中的自定义请求参数的方法    [request appendPostData:requestData];    //设置请求方式    [request setRequestMethod:@"POST"];        //请求执行完会调用block中的代码    [request setCompletionBlock:^{        NSLog(@"Success");        NSLog(@"%@",[request responseString]);                [self.indicator stopAnimating];        [alertView dismissWithClickedButtonIndex:0 animated:YES];        [self.indicator release];        [alertView release];    }];        //如果出现异常会执行block中的代码    [request setFailedBlock:^{        NSLog(@"Failed");        [self.indicator stopAnimating];        [alertView dismissWithClickedButtonIndex:0 animated:YES];        [self.indicator release];        [alertView release];    }];    [request startAsynchronous];        [request release];    }//构建自定义弹出提示框-(void)showToast:(NSString*) message{    alertView = [[UIAlertView alloc] initWithTitle:message message:nil delegate:self  cancelButtonTitle:nil otherButtonTitles:nil, nil];    [alertView setBackgroundColor:[UIColor clearColor]];    //必须在这里调用show方法,否则indicator不在UIAlerView里面    [alertView show];        self.indicator = [[UIActivityIndicatorViewalloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];    self.indicator.center = CGPointMake(alertView.bounds.size.width/2, alertView.bounds.size.height-40);        //停止时隐藏indicator    self.indicator.hidesWhenStopped = YES;        //将UIActivityIndicator作为子控件放在UIAlertView当中    [alertView addSubview:self.indicator];    [self.indicator startAnimating];    }

下面看看运行效果和服务器的返回信息:

                                

点击登录后,可以在控制台看到服务器返回的登录结果:



以上就是一个利用ASIHTTPRequest向服务端发送数据并获取返回结果的小例子,利用ASIHTTPRequest还有其他很多强大的功能,具体使用方法和用途可以查看官方文档。

对Android&IOS感兴趣的朋友可以加入我们的讨论QQ群,在这里,我们只讨论干货:

iOS群:220223507

Android群:282552849


欢迎关注我的新浪微博和我交流:@唐韧_Ryan



原创粉丝点击