适用于iOS项目的XMLRPC-iOS

时间:2011-09-09 14:06:09

标签: iphone ios xcode xml-rpc ios5

我变得疯狂,我无法理解。

我已下载并尝试为iOS构建XMLRPC。我与https://github.com/eczarny/xmlrpchttps://bitbucket.org/kdbdallas/xmlrpc-ios/wiki/Home进行了交涉 第一个是原始的,没有iOS目标。第二个应该,但即使那个似乎也不起作用。

我使用XCode以下列方式构建XMLRPC-iOS lib:

  • 下载,解压缩,在xcode中打开
  • 转到菜单产品>归档
  • 在有条理的情况下,我选择最新版本的“分享”
  • 我将它保存在我自己的项目文件夹中。将其包含在项目中。

当我建立自己的项目时,我得到:

  

ld:警告:忽略文件   /Users/paulp/Documents/ios/iPhone/ios-account/Account/external/XMLRPC/libXMLRPC_iOS.a,   文件是为存档而构建的,而不是链接的体系结构   (i386)架构i386的未定义符号:
  “_OBJC_CLASS _ $ _ XMLRPCRequest”,引自:         MyAPI.o中的objc-class-ref   “_OBJC_CLASS _ $ _ XMLRPCConnectionManager”,引自:         MyAPI.o中的objc-class-ref:未找到符号   体系结构i386 clang:错误:链接器命令失败,退出代码为1   (使用-v查看调用)

怎么可能? XMLRPC-iOS设置设置为:

  • SDKROOT = iphoneos5.0
  • ARCHS = $(ARCHS_STANDARD_32_BIT) = armv7
  • IPHONEOS_DEPLOYMENT_TARGET = 5.0
  • VALID_ARCHS = armv6 armv7k armv7f armv7
  • OTHER_CODE_SIGN_FLAGS = armv7k armv7f armv6 armv7
  • GCC_VERSION = com.apple.compilers.llvmgcc42

有人可以向我解释如何在我自己的应用程序中构建和使用XMLRPC-iOS库吗? 谢谢!

3 个答案:

答案 0 :(得分:10)

它对我有用;这正是我所做的。

  • 创建新项目(称为RpcTest)
  • 从bitbucket下载forked项目,解压缩我的RpcTest目录中的zip,所以我的目录如下所示:

directory structure

  • 将XMLRPC-iOS.xcodeproj拖到我的Xcode项目中(在Frameworks组下,但这没关系)
  • 现在,到构建设置。在项目的Build Settings中,在用户标题搜索路径(取消选中递归)下添加 kdbdallas-xmlrpc-ios-f28a13cc16ae ;现在构建你的项目(cmd + B)
  • 转到构建阶段标签,展开目标依赖项,添加 XMLRPC-IOS 项目,展开Link Binary With Libraries,添加 libXMLRPC_iOS.a。 enter image description here

现在您应该能够包含任何xmlrpc标头并使用lib。

希望有所帮助。

修改 Download via Dropbox. 建议:不完整的实现,只是一个xmlrpc工作的演示! ;)

答案 1 :(得分:0)

我在iPhone项目中成功使用了你提到https://github.com/eczarny/xmlrpc的第一个 应该工作。 (就在不久前)

[编辑]
更多细节: 我导入了XMLRPCResponse和XMLRPCEventBasedParser(+所有相关的类以使它们在项目中工作)。

然后,这是解析响应的代码(我正在手动执行请求):

NSURL* url = [NSURL URLWithString:@"http://www.xxxxxxxxx.fr/xmlrpc.php"];
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
NSString* param = [NSString stringWithFormat: @"<param><value><double>%f</double></value></param><param><value><double>%f</double></value></param><param><value><double>%.0f</double></value></param><param><value><int>1</int></value></param>",
                   request.coordinate.latitude,
                   request.coordinate.longitude,
                   request.radius/1000.0];
NSString* xmlrpcReq = [NSString stringWithFormat:@"<?xml version=\"1.0\"?><methodCall><methodName>geoSearch</methodName><params>%@</params></methodCall>", param];
[urlRequest setHTTPBody:[xmlrpcReq dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse* response;
NSError* error;
NSData* content = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];
XMLRPCResponse* rpcResponse = [[XMLRPCResponse alloc] initWithData:content];
if ([rpcResponse faultCode]==0) { 
     NSArray* result = (NSArray*)[rpcResponse object];

干杯 梅西。

答案 2 :(得分:0)

我可以知道你设定的目标是什么吗?例如,三个目标可用,如果您使用iOS,请选择libXMLRPC然后构建然后从构建中选择libXMLRPC.a文件,然后将其链接到我们的项目。然后它会运行。