iphone 使用Cocoa XML-RPC Framework

池兴邦
2023-12-01

最近做一个项目需要和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: @"localhost:8080 "];  

 //创建一个请求,这个类相当于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{

}

转载于:https://www.cnblogs.com/mainPage/archive/2010/10/22/1858674.html

 类似资料: