Ios 如何使用objective c调用xml rpc Web服务

Ios 如何使用objective c调用xml rpc Web服务,ios,objective-c,xml-rpc,Ios,Objective C,Xml Rpc,假设,Web服务提供者的服务器在表单中公开Web服务 在ios 7项目中,访问Web服务的最佳框架或库是什么?有一些封送框架支持从XML生成对象图,但是我只想做以下几点: 调用服务端点。我最喜欢的库是BBHTTP,但是您可以使用AFNetworking、带gcd的NSURLConnection或任何您喜欢的异步网络调用。 使用以下命令将XML有效负载的相关内容提取到特定于用例的有效负载对象上 我建议使用特定于用例的有效负载对象,因为它们精确地建模了给定服务调用所需的内容——支持契约优先开发的概念

假设,Web服务提供者的服务器在表单中公开Web服务


在ios 7项目中,访问Web服务的最佳框架或库是什么?

有一些封送框架支持从XML生成对象图,但是我只想做以下几点:

调用服务端点。我最喜欢的库是BBHTTP,但是您可以使用AFNetworking、带gcd的NSURLConnection或任何您喜欢的异步网络调用。 使用以下命令将XML有效负载的相关内容提取到特定于用例的有效负载对象上 我建议使用特定于用例的有效负载对象,因为它们精确地建模了给定服务调用所需的内容——支持契约优先开发的概念。这允许您更改内部模型,而不影响与外部系统的集成。类似地,外部API可以更改而不影响您的模型

您可以在RXMLElement上创建一个category方法,以返回映射到用例特定对象的元素。典型的映射通常只需要几行代码就可以从wire格式封送到服务调用的有效负载对象

下面是一个示例,我从中获取的代码希望将有效负载包装在SOAP信封中——忽略这一点

- (void)request:(MyUseCaseRequstPayload*)request onComplete:(void (^)(MyResponsePayload*))onSuccess
        onError:(void (^)(NSError*))onError;
{
    //Even more XML! You can stick your payload inside an envelope if you want
    SoapEnvelope* envelope = [SoapEnvelope envelopeWithContent:[request xmlString]];

    [[BBHTTPRequest postToURL:_serviceUrl data:[envelope data] contentType:@"text/xml"] execute:^(BBHTTPResponse* response)
    {
        RXMLElement* element = [RXMLElement elementFromXMLData:[response content]];
        MyResponsePayload* response = [[element child:@"elementToBeMapped"] asMyObjectType];
        if (onSuccess)
        {
            onSuccess(response);
        }

    } error:^(NSError* error)
    {
        LogDebug(@"Got error: %@", error);
        if (onError)
        {
            onError(error);
        }
    }];
}