【问题标题】:How can I connect iPhone and web service and get XML data?如何连接 iPhone 和 Web 服务并获取 XML 数据?
【发布时间】:2008-12-09 13:18:12
【问题描述】:

我知道如何使用 iPhone 连接到网络服务器,但现在我必须将 iPhone 连接到网络服务。我不知道该怎么做,也没有在线演示或课程。

有人有什么想法吗?

【问题讨论】:

标签: iphone objective-c web-services cocoa-touch


【解决方案1】:

您可能会发现这个名为 Intro to SOAP Web Services 的教程很有用。他展示了如何打包请求、将其发送到 Web 服务并读取响应。

如果您在 XML 解析方面需要一些帮助,TouchXML 库将为您提供一个不错的 xml“文档”。请注意内存使用情况。

如果您必须解析大型 XML 消息,tutorial about libxml and xmlreader in Cocoa 将向您展示如何使用较低级别的事件样式解析器解析 XML。

【讨论】:

    【解决方案2】:

    我为 iPhone OS 3.0 创建了一个开源应用程序,展示了如何在 iPhone 应用程序中使用 REST 和 SOAP 服务,使用 XML(使用 8 个不同的 iPhone 库)、SOAP、JSON(使用 SBJSON 和 TouchJSON)、YAML、协议缓冲区(Google 序列化格式),甚至是来自 PHP 示例应用程序(包含在项目中)的 CSV。

    http://github.com/akosma/iPhoneWebServicesClient

    该项目的模块化程度足以在未来支持许多其他格式和库。

    SlideShare 中的以下演示文稿展示了我在性能、易于实施和有效负载特征方面的发现:

    http://www.slideshare.net/akosma/web-services-3439269

    【讨论】:

      【解决方案3】:

      您可以使用这两行来返回您的 HTTP 请求的响应。您不需要任何配置。例如,如果您尝试访问 PHP 脚本,则此代码很有用。在你只需要解析你的结果之后。

      NSURL *URL=[[NSURL alloc] initWithString:stringForURL];
      NSString *results = [[NSString alloc] initWithContentsOfURL :URL];
      

      【讨论】:

      • 只要脚本快速返回,因为这段代码创建了一个同步请求,阻塞了当前线程(可能是UI线程,这是一个非常糟糕的主意)。尽可能使用异步连接。 akos.ma/_pp0
      • 正如 Adrian Kosmaczewski 提到的,这段代码创建了一个阻塞调用,这将有效地锁定您的应用程序。如果可以的话,一定要使用异步调用。
      • 那么 dotnet 网络服务呢?
      • 只要有网址就可以!正如@akosma 提到的,它仅用于测试目的,因为它是同步的。然后您将实现其他方式来访问数据
      【解决方案4】:

      在我看来,你有两个选择:

      • 使用第三方库。你可以试试wsdl2objc。它对我不起作用,但它正在积极开发中,因此每天都在改进。
      • 使用原始 HTTP 连接并处理每个请求/响应。这是我遵循的方式。这很难,所以我也想知道更好的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        • 2012-03-20
        • 2012-04-20
        • 2013-11-27
        相关资源
        最近更新 更多