我计划为iPhone开发一个应用程序,该应用程序必须访问几个SOAP服务。虽然在iPhone SDK中做了一些基本的检查,但我无法找到任何对访问SOAP服务的支持,谷歌一下得出的结论是,iPhone SDK中不支持SOAP。

因此,如果我确实想要构建该应用程序,我将需要提出一种从iPhone访问SOAP服务的方法。最好的方法是什么?有什么最佳实践吗?是否有人已经编写了一个使用iPhone SDK中提供的功能来访问SOAP服务的库?

(因为我需要访问的服务是由另一方公开的,他们只将其公开为SOAP,不幸的是,不能切换到另一种类型的接口(例如基于REST的API)。

Gero


当前回答

看看gsoap,它在ios_plugin下的下载包中包含了两个iOS示例。该工具将WSDL转换为SOAP和XML REST的代码。

其他回答

看看这个链接和他们的路线图。他们有RO|C在路上,可以连接到他们的web服务,其中可能包括SOAP(我使用VCL版本,其中肯定包括它)。

您可以使用我找到的工具http://www.wsdl2code.com进行连接

SampleServiceProxy *proxy = [[SampleServiceProxy alloc]initWithUrl:@"YOUR
        URL" AndDelegate:self];

[proxy GetDouble];
[proxy GetEnum];
[proxy getEnum:kTestEnumTestEnum2];
[proxy GetInt16];
[proxy GetInt32];
[proxy GetInt64];
[proxy GetString];
[proxy getListStrings];

看看gsoap,它在ios_plugin下的下载包中包含了两个iOS示例。该工具将WSDL转换为SOAP和XML REST的代码。

一个字:不要。

好吧,显然这不是一个真实的答案。但是无论如何都应该避免使用SOAP。;-)是否可以在iPhone和web服务之间添加代理服务器?也许是一些为您将REST转换为SOAP的东西?

您可以尝试CSOAP,这是一个依赖于libxml2的SOAP库(包含在iPhone SDK中)。

我已经为OSX编写了自己的SOAP框架。然而,它不是主动维护的,需要一些时间来移植到iPhone(首先,你需要用TouchXML替换NSXML)

我曾经在较低级别(XML生成和解析)使用自己的访问,以处理来自Objective-C的SOAP样式请求的偶尔需求。也就是说,有一个叫做SOAPClient (SOAPClient)的库是开源的(BSD许可),可以在谷歌Code (mac-soapclient)上使用,您可能会感兴趣。

我不会证明它的能力或有效性,因为我从未使用过它或必须使用它的API,但它是可用的,可能会根据您的需求为您提供快速解决方案。

苹果曾经有一个非常糟糕的实用程序,叫做WS-MakeStubs。我不认为它在iPhone上是可用的,但是你可能会对一个开源库感兴趣,该库旨在取代它——代码生成Objective-C来与SOAP客户端交互。同样,我没有使用过它——但我在笔记中标记了它:wsdl2objc