【问题标题】:Whats the best way to have an iPhone app to pass data to a website?让 iPhone 应用程序将数据传递到网站的最佳方式是什么?
【发布时间】:2010-08-05 12:28:04
【问题描述】:

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

谁能告诉我我是否朝着正确的方向前进并使用正确的工具,因为这对于我认为相对简单的事情来说似乎非常复杂。也许是因为我习惯了 .NET C#,其中很多东西都是开箱即用的。

ie 如果我要向我的服务发送以下 JSON 片段,取自以下示例 JSON example

{
“名字”:“约翰”,
"姓氏": "史密斯",
“年龄”:25,
“地址”:{
"streetAddress": "21 2nd Street",
“城市”:“纽约”,
“州”:“纽约”,
"邮政编码": "10021"
},
“电话号码”:[
{ "type": "home", "number": "212 555-1234" },
{“类型”:“传真”,“号码”:“646 555-4567”}
]
}

【问题讨论】:

  • 嗯,.Net 主要是一个数据库访问框架,所以它有很多内置的与 DB 通信的方法也就不足为奇了。这样做是它存在的理由。您应该记住,您正在从专用工具转向通用操作系统。
  • @TechZen 我们真的在这里谈论同一个 .NET 吗? :)

标签: iphone objective-c


【解决方案1】:

我会使用 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 ...
}

【讨论】:

  • 优秀的正是我正在寻找的那种东西。以另一种方式发送数据呢?已设法使用示例获取数据我将如何将我的 JSON 传回我的服务?因此,如果我将您提到的示例中使用的 JSON 传回(已编辑问题)。
【解决方案2】:

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

有很多类可以处理 HTTP,例如 NSURLConnection

如果你被 JSON 卡住了,你可以使用一些 C/C++ JSON library

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

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

【讨论】:

  • 嗯,数据必须以一些的形式传递。如果您将自己限制为纯 multipart/form-data 和 HTTP POST,那么您可以传递给服务器的就只有这么多。
  • 对不起。我不明白。什么不能通过简单的 HTTP-POST 传递而您可以通过 JSON 传递?毕竟,JSON 和 SOAP 使用 HTTP 作为传输...
  • @Pablo JSON 可以表示复杂的对象。 只是 HTTP 我假设您的意思是键和值的平面列表。
  • JSON 是我想要的理想方式,如果可能的话,因为我可以在 .net 端轻松序列化/反序列化它并且非常轻量级。
  • @Cragly 我会选择第 3 方 JSON 库。使用赋予您权力的工具并不丢人。
猜你喜欢
  • 2019-04-22
  • 2011-11-22
  • 1970-01-01
  • 2010-09-08
  • 2010-09-20
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多