什么是让iPhone应用程序将数据传递到网站的最佳方式?

时间:2010-08-05 12:28:04

标签: iphone objective-c

我正在构建我的第一个iPhone应用程序(xCode,objective-c),它必须使用Web服务或WCF服务与现有网站进行通信。我主要研究使用网站中托管的WCF服务,该服务可以发送和接收JSON(使其轻量级而不是SOAP的开销)。然而,我发现越来越难以在iPhone方面工作,而不必使用各种第三方包装器,如JSON Framework和ASIHTTPRequest。

有人可以告诉我,如果我朝着正确的方向前进并使用正确的工具,因为对于我认为相对直接的事情来说,这似乎非常复杂。也许是因为我已经习惯了.NET C#,其中很多东西都是开箱即用的。

即如果我要将以下示例JSON example

中的以下JSON发送回我的服务

{
          “firstName”:“John”,
          “lastName”:“史密斯”,
          “年龄”:25,
          “地址”:{
              “streetAddress”:“21 2nd Street”,
              “城市”:“纽约”,
              “州”:“纽约”,
              “postalCode”:“10021”
          },
          “phoneNumber”:[
              {“type”:“home”,“number”:“212 555-1234”},
              {“type”:“fax”,“number”:“646 555-4567”}
          ]
}

2 个答案:

答案 0 :(得分:4)

我使用JSON格式化数据 - 编码和解码JSON非常简单this tutorial should show。此外,如果您要发送的数据变得更复杂,JSON将缩放以匹配它。通过HTTP发送原始数据会让您感到困惑,因为如果没有某种协议,您的应用程序会变得更加复杂。我避开了SOAP - 每当我试图使用它时,它就会变得很大而且令人困惑。

对于ASI,我个人喜欢使用它 - 获得基本连接非常简单,但如果你需要它可以做强大的事情 - 看看他们的basic documentation here

以下是ASI和JSON从www.example.com获取数据并将其解析为NSDictionary的示例:

- (void)startConnection {
    NSURL *url = [NSURL URLWithString:@"http://www.example.com"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
    NSString *rawdata = [request responseString];
    NSDictionary* lotsOfData = [rawdata JSONValue];

    ... Do stuff with your JSON here ...
}

答案 1 :(得分:-1)

我会使用直接的HTTP协议。没有JSON或SOAP。

有许多类可以像NSURLConnection一样处理HTTP。

如果你坚持使用JSON,你可以使用一些C / C ++ JSON library

如果您遇到SOAP,可以使用Apache的AXIS或其他一些C / C ++ SOAP客户端库。

同样,正如我所提到的,最简单的方法是使用 HTTP