UI_网络编程

来源:互联网 发布:起凡刷通宝软件 编辑:程序博客网 时间:2024/05/16 07:03

网络请求方式分为两种方法: GET , POST。

GETPOST的区别及共同点:

1. 客户端到底写GET还是POST, 跟服务器有关后期开发时,回合服务器开发人员一起开发到时候客户端开发人员需要询问服务器相关接口是GET还是POST

2. 不管是什么样的请求方式都可以进行一步连接(获得服务器所返回的数据)

3. 得到数据后根据数据不同进行不同的解析方式

4. GET请求的网址包含参数,POST一般不在网址中包含参数而是通过body包含参数


网络连接方式分为两种:同步,异步。


GET方法请求方式下的网络连接:

在GET方法中网址分为两部分 :

 1/  '?'之前的部分 ->即网址有请求的文件在服务器的路径

 2/  '?'号之后的部分 ->即相对文件中所传的参数



同步:

- (NSData *)startConnect

{

//  第一步 :准备网址, 网址就是一个字符串

    NSString *urlStr =@"http://project.lanou3g.com/teacher/yihuiyun/lanouproject/activitylist.php";


//  第二步 :将网址进行封装, 包括请求方式

   NSURL *url = [NSURLURLWithString:urlStr];

    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];

    

//告诉接下来的网络连接这个网络请求是什么样的网络请求

    [requestsetHTTPMethod:@"GET"];

    

//  第三步 :连接服务器, 同步

   NSURLResponse *responce = nil;

   NSError *error = nil;

 

//同步请求时的错误信息

       NSData *data = [NSURLConnectionsendSynchronousRequest:request returningResponse:&responce error:&error];

    

   //data转换成可读的文本,用于分析

   return data;

  

}


异步 :

通过NSURLConnectionDataDelegate协议实现


- (void)startConnectA:(NSString *)urlStr

{

   NSURL *url = [NSURLURLWithString:urlStr];

    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];

    [requestsetHTTPMethod:@"GET"];

    

 //正常的异步网络请求,通过协议来完成

    [NSURLConnectionconnectionWithRequest:request delegate:self];

    

}

//获得服务器的响应(只走一次)

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

   

}

//接收数据(走多次)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

    

//由于网络原因,接收数据的方法会走多次,因此需要将每次得到的说句进行拼接

    [_recevieData appendData:data];

}

//接收数据完成(只走一次)

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

 //在数据传输完成时,要用协议把_recevieData传到前面

}


POST方法请求方式下的网络连接:

POST方法的网址结构:

1/ 网址仅仅为'?'之前的,不包括后面的参数          

2/ 参数需要通过的body进行封装才能传递



- (void)startConnectionA:(NSString *)string parmaters:(NSDictionary *)parmaters

{

   NSURL *url = [NSURLURLWithString:string];

    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];

    [requestsetHTTPMethod:@"POST"];

    

//封装参数,将参数拼接为count = 6 的这种字符串

   NSString *str = @"";

   for (NSString *keyin parmaters) {

       if ([str length] ==0) {

            str = [NSStringstringWithFormat:@"%@=%@", key, [parmatersobjectForKey:key]];

        }else {

            str = [NSStringstringWithFormat:@"%@&%@=%@", str, key, [parmatersobjectForKey:key]];

        }

    }

//将拼接完的参数放到request里进行封装

    NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];

    [requestsetHTTPBody:data];

    

    [NSURLConnectionconnectionWithRequest:request delegate:self];

}


- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

    

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

    [_data appendData:data];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

    

}


0 0
原创粉丝点击