iOS 中客户端和服务器的 Web Service 网络通信 (2)

在实际的应用开发过程中,同步请求的用户体验并不是很好;我们都知道,Apple是很重视用户体验的,这一点也成为了行业的标杆,没有用户哪里来的好产品,所以用户体验是极其重要的。貌似废话有点多,接下来进入正题。同步请求不好,那么就使用异步请求的方法。在开发中,异步请求会使用
NSURLConnetction 类的委托协议 NSURLConnectionDelegate。在请求不同阶段会回调委托对象方法,具体方法如下:

connection:didReceiveData: 当请求成功时,这个方法就会开始接收数据,如果数据量很多,它会被多次调用; connection:didFailWithError: 从方法中我们也可以大体知道这个方法的作用,没错,就是用来处理当加载数据出现异常的时候调用的; connectionDidFinishLoading:
从方法的命名中也可以知道这个方法是用来当成功完成加载数据时调用的,但在 connection:didReceiveData: 方法之后执行。

PS:记得在.h头文件中的 @interface 接口中加入委托的申明<NSURLConnectionDelegate> 哦!

加下来是具体实现的代码:

<span style="font-size:32px;"> * 开始请求Web Service
 */
-(void)startRequest
{    

    NSString *strURL = [[NSString alloc] initWithFormat:
                        @"请求服务器地址"];

	NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];

	NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

	NSURLConnection *connection = [[NSURLConnection alloc]
                                   initWithRequest:request
                                   delegate:self];

    if (connection) {
        self.datas = [NSMutableData new];
    }

}

#pragma mark- NSURLConnection method
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [self.datas appendData:data];   //利用NSMutalbeArray数组datas不断接收服务器端返回的数据
}

-(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error {

    NSLog(@"%@",[error localizedDescription]);
}
//当connection:didReceiveData:方法成功接收数据后回调这个方法
- (void) connectionDidFinishLoading: (NSURLConnection*) connection {
    NSLog(@"请求完成...");
    NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:_datas options:NSJSONReadingAllowFragments error:nil];
    [self reloadView:dict];    //从服务端接收完整数据后,再把数据发送回表示层的视图控制器
}</span>

时间: 2024-12-04 15:08:03

iOS 中客户端和服务器的 Web Service 网络通信 (2)的相关文章

iOS 中客户端和服务器的 Web Service 网络通信

当你打开你手机上新浪微博应用或者知乎应用是,你是否会去想这些显示在手机上的图片和数据时从哪里来的?又是通过怎样的方法实现的?好,那么接下来就介绍是如何实现的,过程又是怎么样的. 当我们浏览着关注或者好友的微博时,那些图片和数据不是凭空出现的,而是通过你的客户端向服务器请求后由新浪微博的服务器返回本地所获得,通过数据的解析就能够在客户端上进行显示,甚至是操作.而这些,就是我们通常所说的 Web Service.Web Service 技术是一种通过 Web 协议提供服务,保证不同平台的应用服务可以

iOS 中client和server的 Web Service 网络通信 (2)

在实际的应用开发过程中,同步请求的用户体验并非非常好:我们都知道.Apple是非常重视用户体验的.这一点也成为了行业的标杆,没实用户哪里来的好产品.所以用户体验是极其重要的.貌似废话有点多.接下来进入正题.同步请求不好.那么就使用异步请求的方法.在开发中,异步请求会使用 NSURLConnetction 类的托付协议 NSURLConnectionDelegate.在请求不同阶段会回调托付对象方法,详细方法例如以下: connection:didReceiveData: 当请求成功时,这种方法就

iOS 中client和server的 Web Service 网络通信 (1)

当你打开你手机上新浪微博应用或者知乎应用是.你是否会去想这些显示在手机上的图片和数据时从哪里来的?又是通过如何的方法实现的?好.那么接下来就介绍是如何实现的.过程又是怎么样的.      当我们浏览着关注或者好友的微博时.那些图片和数据不是凭空出现的,而是通过你的client向server请求后由新浪微博的server返回本地所获得,通过数据的解析就行在client上进行显示,甚至是操作.而这些,就是我们通常所说的 Web Service. Web Service 技术是一种通过 Web 协议提

iphone ios 用xcode4.2开发 访问web service的功能

http://blog.csdn.net/panyaorui/article/details/8622990 1.后台利用 cxf 构建一个web service服务. HelloWorld.java [java] view plaincopy /** * */ package com.alcor.jws.test; import javax.jws.WebMethod; import javax.jws.WebService; import org.apache.cxf.feature.Fea

项目中使用WCF替换asmx Web service总结

以前项目解决方案中,用http协议的asmx Web service作服务器数据访问入口,在SoapHeader中写入用户名和加盐密码进行身份认证. 但http asmx服务都是明文传输,数据在传输过程中很容易被截取.篡改.在内网使用.用户量小.安全问题不严重时可以采用. 因项目发展,需要对服务器进行改造,升级成更高级的安全方式. 最先想到的是将http协议改用https,解决数据明文传输和有可能被篡改问题. 但是,https传输存在两个问题:1是客户机要安装证书,2是运行环境中客户机与服务器之

asp.net ajax客户端框架如何调用Web Service

1:Web Service类添加 [System.Web.Script.Services.ScriptService]特性2:需要异步调用的方法需要添加[WebMethod]特性 3,页面必须添加ScriptManager控件(有且唯一)4: ScriptManager添加对相应的Web Service的ServiceReference5:在客户端使用如下格式调用: [NameSpace].[ClassName].[MethodName](parm1,parm2,...,callbackFunc

观察HTTP协议中客户端向服务器发送的请求,理解并实现一个最简单的AJAX请求案例

一.什么是HTTP协议 HTTP协议即超文本传输协议,网站就是基于HTTP协议的,例如网站的图片.CSS.JS等都是基于HTTP协议进行传输的.HTTP协议是由从客户机到服务器的请求(Request)和从服务器到客户机的响应(Response)进行了约束和规范. 大白话的说,就是你在浏览器输入一个网址,例如http://baidu.com,这时你就是向百度的服务器发送了请求了....经过一系列你看不到的处理之后,你的浏览器出现一个百度的首页,这就是百度的服务器对你的浏览器的成功的响应. 二.在浏

iOS中基于 Socket 的 C/S 结构网络通信(中)

结合上一篇的知识,接下来将介绍基于 TCP 协议的 Socket  编程:由于 Socket 需要有客户端和服务端,那么现在实现的是关于服务端的简单程序.服务端采用的是CFStream 类来实现的.      这个服务端是把Xcode中的 Command Line Tool 来作为服务端的:当然,你也可以把 iPhone 作为服务端,但是要利用其他的框架,比如 AsyncSocket (https://github.com/roustem/AsyncSocket) ,里面有分为 UDP 和 TC

用Jersey为Android客户端开发Restful Web Service

平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关注相对较少,但是如果我们要自己一个人设计并开发一套完整的系统,我们就必须同时具备客户端和服务端的开发知识,而且我认为同时掌握客户端和服务端的开发技术还是很有用处的,不仅有助于提升我们的架构知识和能力,而且还……你懂得!身边一些做WEB开发的朋友很多都说为客户端开发接口和单纯地做WEB项目并没有很大的