Проект XMLRPC-iOS для iOS - PullRequest
       10

Проект XMLRPC-iOS для iOS

6 голосов
/ 09 сентября 2011

Я схожу с ума, я не могу понять это.

Я скачал и пытаюсь собрать XMLRPC для iOS. Я перехожу с https://github.com/eczarny/xmlrpc и https://bitbucket.org/kdbdallas/xmlrpc-ios/wiki/Home Первый, оригинальный, не имеет цели для iOS. второй должен иметь, но даже этот, похоже, не работает.

Я создаю XMLRPC-iOS lib с использованием XCode следующим образом:

  • скачать, распаковать, открыть в xcode
  • Перейти в меню Product> Archive
  • В организованном порядке я выбираю «Поделиться» в последней сборке
  • Я сохраняю его в своей папке проекта. Включите это в проект.

Когда я строю свой собственный проект, я получаю:

ld: предупреждение: игнорирование файла /Users/paulp/Documents/ios/iPhone/ios-account/Account/external/XMLRPC/libXMLRPC_iOS.a, файл был создан для архива, который не связан с архитектурой (i386) Неопределенные символы для архитектуры i386:
"_OBJC_CLASS _ $ _ XMLRPCRequest", на который ссылаются из: objc-class-ref в MyAPI.o
"_OBJC_CLASS _ $ _ XMLRPCConnectionManager", на который ссылаются из: objc-class-ref в MyAPI.o ld: символ (ы) не найден для архитектура 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 ]

10 голосов
/ 20 сентября 2011

у меня сработало; вот именно то, что я сделал.

  • Создать новый проект (называется RpcTest)
  • Загрузите разветвленный проект из bitbucket, распакуйте zip в мою директорию RpcTest, так что моя директория выглядит так:

directory structure

  • Перетащите XMLRPC-iOS.xcodeproj в мой проект Xcode (в группе Frameworks, но это не имеет значения)
  • Теперь перейдем к настройкам сборки. Добавьте kdbdallas-xmlrpc-ios-f28a13cc16ae в Пути поиска по заголовку пользователя (снимите отметку с рекурсивного режима) в настройках сборки вашего проекта; Теперь создайте свой проект (cmd + B)
  • перейдите на вкладку Этапы сборки , разверните Целевые зависимости , добавьте XMLRPC-IOS проект, разверните Link Binary With Libraries, добавьте libXMLRPC_iOS.a . enter image description here

Теперь вы должны иметь возможность включить любой заголовок xmlrpc и использовать библиотеку.

Надеюсь, это поможет.

EDIT Загрузка через Dropbox. имейте в виду: неполная реализация, просто демонстрация того, как работает xmlrpc! ;)

0 голосов
/ 16 сентября 2011

Могу ли я узнать, какую цель вы устанавливаете?например, доступны три цели, если вы используете для iOS, выберите libXMLRPC, затем выполните сборку, затем выберите файлы libXMLRPC.a из сборки и затем свяжите их с нашим проектом.тогда он будет работать.

0 голосов
/ 15 сентября 2011

Я использовал первый, который вы упомянули https://github.com/eczarny/xmlrpc, с успехом в проекте iPhone.
Должно работать.(было некоторое время назад)

[EDIT]
Еще несколько деталей: я импортировал 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];

Ура Лайонел.

...