一个基于AFNetworking构建的JSON-RPC客户端
JSON-RPC是一个使用JSON格式编码的远程过程调用协议。它是一个简单的协议(与XML-RPC非常相似),只定义了一小部分数据类型和命令。JSON-RPC允许发送通知(发送到服务器但不需要响应的信息)和发送多个调用到服务器,这些调用可能会按顺序返回。
AFJSONRPCClient *client = [AFJSONRPCClient clientWithEndpointURL:[NSURL URLWithString:@"http://path.to/json-rpc/service/"]];
// Invocation
[client invokeMethod:@"method.name"
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
// ...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// ...
}];
// Invocation with Parameters
[client invokeMethod:@"method.name"
parameters:@{@"foo" : @"bar", @"baz" : @(13)}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// ...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// ...
}];
// Invocation with Parameters and Request ID
[client invokeMethod:@"method.name"
parameters:@[@(YES), @(42)]
requestId:@(2)
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// ...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// ...
}];
将您的JSON-RPC客户端与Objective-C协议结合起来以乐趣和利益!
@protocol ArithemeticProtocol
- (void)sum:(NSArray *)numbers
success:(void (^)(NSNumber *sum))success;
failure:(void (^)(NSError *error))failure;
@end
AFJSONRPCClient *client = [AFJSONRPCClient clientWithEndpointURL:[NSURL URLWithString:@"http://path.to/json-rpc/service/"]];
[[client proxyForProtocol:@protocol(ArithemeticProtocol)] sum:@[@(1), @(2)]
success:^(NSNumber *sum) {
// ...
} failure:^(NSError *error) {
// ...
}];
您还可以对AFJSONRPCClient
进行子类化,以便为共享类和与服务相关的方法提供共享代码。
MyJSONRPCClient *client = [MyJSONRPCClient sharedClient];
[client sum:@[@(1), @(2)]
success:^(NSNumber *sum) {
// ...
} failure:^(NSError *error) {
// ...
}];
CocoaPods是推荐的方式,用于将AFJSONRPCClient添加到项目中。
以下是一个示例Podfile,它将AFJSONRPCClient及其依赖项AFNetworking安装到项目中。
platform :ios, '5.0'
pod 'AFJSONRPCClient', '0.1.0'
请注意指定iOS 5.0作为平台;省略5.0会导致CocoaPods失败,并显示以下消息
[!] AFJSONRPCClient与iOS 4.3不兼容。
AFJSONRPCClient和AFNetworking都可在MIT许可证下获得。有关更多信息,请参阅LICENSE文件。