打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ios中的http:get,post,同步,异步
http://www.cnblogs.com/edisonfeng/archive/2014/07/07/3830224.html


 1、头文件:NetCenter.h

#import <Foundation/Foundation.h>@interface NetCenter : NSObject@property(nonatomic,retain) NSMutableData *receiveData;@property(nonatomic,assign)int dataPackSerialNo;- (void)httpGetSyn;- (void)httpPostSyn;- (void)httpGetNoSyn;- (void)httpPostNoSyn;@end

  2、实现文件:NetCenter.m

#import "NetCenter.h"@implementation NetCenter@synthesize receiveData=_receiveData;@synthesize dataPackSerialNo=_dataPackSerialNo;- (void)httpGetSyn{    NSLog(@"httpGetSyn...");        /*    NSString *urlString =url;    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];    [request setURL:[NSURL URLWithString:urlString]];    [request setHTTPMethod:@"GET"];    NSHTTPURLResponse* urlResponse = nil;    NSError *error = [[NSError alloc] init];    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];    NSMutableString *result = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];    NSLog(@"The result string is :%@",result);    */    //第一步,创建URL    NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet?name=admin&psw=admin"];        //第二步,通过URL创建网络请求    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];    //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)    /*    其中缓存协议是个枚举类型包含:    NSURLRequestUseProtocolCachePolicy(基础策略)    NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)    NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)    NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)    NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)    NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)    */    //第三步,连接服务器    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];    NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];        NSLog(@"%@",str);}- (void)httpPostSyn{    NSLog(@"httpPostSyn...");        //第一步,创建URL    NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet"];        //第二步,创建请求    NSString *postStr = [[NSString alloc] initWithFormat:@"name=%@&psw=%@",@"admin",@"admin"];    NSData *postData = [postStr dataUsingEncoding:NSUTF8StringEncoding];    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];    [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET    [request setHTTPBody:postData];//设置参数        //第三步,连接服务器    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];    NSString *backStr = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];        NSLog(@"%@",backStr);}- (void)httpGetNoSyn{    NSLog(@"httpGetNoSyn...");        //第一步,创建url    NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet?name=admin&psw=admin"];        //第二步,创建请求    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];        //第三步,连接服务器    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];    }- (void)httpPostNoSyn{    NSLog(@"httpPostNoSyn...");        //第一步,创建url    NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet"];        //第二步,创建请求    NSString *postStr = [[NSString alloc] initWithFormat:@"name=%@&psw=%@",@"admin",@"admin"];    NSData *postData = [postStr dataUsingEncoding:NSUTF8StringEncoding];    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];    [request setHTTPMethod:@"POST"];    [request setHTTPBody:postData];        //第三步,连接服务器    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];}/*************5、异步请求的代理方法[start]****************///接收到服务器回应的时候调用此方法- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{    NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;    NSLog(@"%@",[res allHeaderFields]);    self.receiveData = [NSMutableData data];//数据存储对象的的初始化    self.dataPackSerialNo=0;    NSLog(@"收到服务器回应。。。");}//接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{    NSLog(@"收到服务器传回的数据包,数据包序号:%d",self.dataPackSerialNo);    [self.receiveData appendData:data];    self.dataPackSerialNo+=1;}//数据传完之后调用此方法-(void)connectionDidFinishLoading:(NSURLConnection *)connection{    NSLog(@"数据传输完成,输出所有数据结果。。。");    NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];    NSLog(@"%@",receiveStr);}//网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{    NSLog(@"网络请求出错:%@",[error localizedDescription]);}/*************5、异步请求的代理方法[end]****************/@end

  3、调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];        NetCenter *netCenter=[[NetCenter alloc]init];            /*****************同步请求****************/    //[netCenter httpGetSyn];    //[netCenter httpPostSyn];        /*****************异步请求****************/    //[netCenter httpGetNoSyn];    [netCenter httpPostNoSyn];        self.window.backgroundColor = [UIColor whiteColor];    [self.window makeKeyAndVisible];    return YES;}  

三、测试

  1、同步get

  

  2、同步post

  

  3、异步get

  

  4、异步post

  

三、扩展

  1、http和https

    http://www.cnblogs.com/stan0714/archive/2012/03/21/2409872.html

  2、ios网络编程理论与实例

    http://blog.csdn.net/hgy2011/article/details/8676084


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ios网络请求 get
iOS网络通信http之NSURLConnection
IOS学习笔记(16)网络请求,json解析
网络(2)—NSURLConnection进行数据异步请求
iOS开发之缓存(一):内存缓存
iphone实现声音的录制和播放
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服