最近做一个项目需要和rpc_xml打交道,原来一直想解析xml啊,方法挺多,可是以xml格式向服务器发送数据使用soap确实听麻烦,就一个boby我加“/n"就挺费时的。幸亏有个框Cocoa XML-RPC Framework,省去了我许多麻烦,可是在使用框架时遇到了许多问题,使我非常纠结,在网上找相关的配置却少的可怜,弄了一天总算是知道如何使用了。
1,下载The Cocoa XML-RPC Framework ,下载地址为:
http://github.com/eczarny/xmlrpc
2,下载以后解压开,可以看到Tools,UnitTests,build,和一些类文件。
其中Tools里面有两个文件夹,一个是Test Client,Test Server,如果你没有可访问的服务器的话这两个文件加可以做本地测试,前提是你必须在本地装服务器,而后将Test Server运行。
3,关于如何将CocoaXMl引入到你的项目里面,这个有点麻烦,一直我想将build里面的框架引入,但报错很多,其实有一种最简单我办法,就是首先你打开xmlRPc.xcodeProj文件,带开项目以后,将项目Classes下面的文件全部复制到你的项目,这个时候运行你的项目,会发现出现错误,不过没关系,直接将出错的地方删除,而后运行,发现好了吧,接下来就是如何使用这个框架了,使用非常简单。
4使用Cocoa XML-RPC
//创建一个url地址
NSURL *URL = [NSURL URLWithString: @"http://219.234.220.18/swayable/xmlrpc.php "];
//创建一个请求,这个类相当于sdk里面的NSURLRequest
XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL];
//创建一个连接服务器的类,和sdk里面NSURLConnection,它其实是对这个类进行了封装你可以看它源代码
XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager];
//将你所要传递的参数封装到一个数组里面
NSArray *uAndP=[NSArray arrayWithObjects:firstName,lastName,nil];
//设置UserAgent
[request setUserAgent:@"The Incutio XML-RPC PHP Library"];
//设置你将数据传送到服务器以后所要调用的方法
[request setMethod:@"IXR.login" withParameters:uAndP];
//打印出来可以看到你所要给服务器发送的数据,这个时候它已经自动的封装成为一个xml格式了
NSLog(@"Request body: %@", [request body]);
//发送请求,这里有个代理,你需要实现XMLRPCConnectionDelegate
[manager spawnConnectionWithXMLRPCRequest: request delegate: self];
[request release];
//出错信息
-(void) request:(XMLRPCRequest *)request didFailWithError:(id)error{
NSLog(@"%@",error);
}
//得到服务器返回的数据
-(void) request:(XMLRPCRequest *)request didReceiveResponse:(XMLRPCResponse *)response{
//打印出来看下
NSLog(@"%@",[response body]);
}
-(BOOL) request:(XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace{
return YES;
}
-(void) request:(XMLRPCRequest *)request didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
}
-(void) request:(XMLRPCRequest *)request didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
}