创建博客 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dream的博客

dream~~and~~梦

 
 
 

日志

 
 
关于我

我喜欢,所以我追求; 因为青春,所以我充满活力和激情; 我用心体验生活,用爱去抚慰心灵! 我们有共同的追求--追求美好的生活,实现自我价值!

LOFTER精选

HessianKit使用体验  

2011-04-06 15:23:16|  分类: 默认分类 |  标签: |举报 |字号 订阅

HessianKit使用参考资料比较少,通过摸索,把测试过程贴出来,代码很乱,未整理,先实现功能,再应用到项目中.供新手参考.如有问题,跟帖指正...

 

HessianService与Java Server端的接口一样.

 import <UIKit/UIKit.h>

 import "CWHessianArchiver.h"

 import "User.h"

@protocol HessianService

-(NSString *) sayHello; //定一个无参方法,返回string类型

-(NSString *) yy:(NSString *)userName;//传递一个string参数,返回string参数

-(id<User>) getHessianModel;//无参,返回一个User类型的对象.在Java Server端中有一个实体类与之对应

-(BOOL)save:(NSString *)userName;

-(NSArray *)listAll;

-(void)save2:(NSString *)username password:(NSString *)password;

-(int)syn:(NSMutableArray *)list;

-(int)suser:(id<User>)user;

-(int)slist:(NSMutableArray<User>*)list; //传递list 数组

@end

 

//以下是测试方法 要引入相关的头文件

//server URL

NSURL *url = [NSURL 

  URLWithString:@http://192.168.1.102:8080/SignInService/mvc/hessian/hessianService];

 

 

//设置代理类

id<HessianService> proxy = (id<HessianService>)[CWHessianConnection proxyWithURL:url

protocol:@protocol(HessianService)];

 

 

//客户端与服务器端的方法关联.可以用不一样的方法名.通过 CWHessianArchiver 映射,就可以解决找不到方法

[CWHessianArchiver setMethodName:@"yy_1" forSelector:@selector(yy:)];

[CWHessianArchiver setMethodName:@"getHessianModel" forSelector:@selector(getHessianModel)];

[CWHessianArchiver setMethodName:@"save" forSelector:@selector(save:)];

[CWHessianArchiver setMethodName:@"listAll" forSelector:@selector(listAll)];

[CWHessianArchiver setMethodName:@"save2" forSelector:@selector(save2:password:)];

[CWHessianArchiver setMethodName:@"syn" forSelector:@selector(syn:)];

 

//User 与服务器端的com.listentek.signIn.server.model.User进行关联映射,否则找不到实体类.带上包名.

[CWHessianArchiver setClassName:@"com.listentek.signIn.server.model.User" forProtocol:@protocol(User)];

[CWHessianArchiver setMethodName:@"slist" forSelector:@selector(slist:)];

 

//调用方法很简单,

  //调用sayHello方法

NSLog(@"xxx:%@",[proxy sayHello]);

  NSString *re = @"hello";

NSLog(@"web:%@",[proxy yy:re]);

   id<User> user = [proxy getHessianModel];

  NSLog(@"name=%@",[user objectForKey:@"password"]);

  //传递单个数据

  NSLog(@"save:%@",[proxy save:re]);

//获取list数据

  NSArray *array = [proxy listAll];

  for(id user2 in array){

NSLog(@"name=%@",[user2 objectForKey:@"password"]);

}

[proxy save2:@"hehe" password:@"yyy"];

 

 

//声明实体类 查看CWValueObject 源码,  valueObjectWithProtocol方法中,为@protocol User 初始化,分配内存.

id<User> u = (id<User>)[CWValueObject valueObjectWithProtocol:@protocol(User)];

[u setPassword:@"xxx"];

[u setUserName:@"yyy"];

NSLog(@"%@",u);

NSLog(@"pass=%@,name=%@",u.password,u.userName);

  [proxy suser:u];

 

//传递数组

  NSMutableArray  *array3 = [[NSMutableArray  alloc] init];

[array3 addObject:u];

for (int k=1; k<3; k++) {

id<User> u2 = (id<User>)[CWValueObject valueObjectWithProtocol:@protocol(User)];

u2.password = [NSString stringWithFormat:@"k%d",k];

u2.userName = [NSString stringWithFormat:@"k%d",k];

[array3 addObject:u2];

}

  [proxy slist:array3];

  评论这张
 
阅读(1897)| 评论(9)
推荐 转载

历史上的今天

最近读者

热度

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2014