【问题标题】:iPhone: How to send a HTTP request to a web service using XcodeiPhone:如何使用 Xcode 向 Web 服务发送 HTTP 请求
【发布时间】:2011-08-31 19:41:09
【问题描述】:

如何使用 Objective-C 向 Web 服务发送 HTTP 请求?我需要从我的 MySQL 数据库中获取一些数据,所以我需要发送请求以便获取数据。

【问题讨论】:

    标签: ios objective-c iphone http


    【解决方案1】:

    编辑,因为这是一个流行的问题,而且时间还在继续。 与此同时,Apple 引入了 NSJSONSerialization。看看文档:https://developer.apple.com/documentation/foundation/jsonserialization 仅当您需要为 5.0 之前的 iOS 创建代码时,您可能需要使用下面提到的 json-framework。

    除此之外,以下原始答案仍然有效:

    假设您以 JSON 格式交换数据,您可能有兴趣阅读本文。 http://iosdevelopertips.com/cocoa/json-framework-for-iphone-part-2.html

    但是,该文章的第一部分回答了您关于如何从 Web 服务器/服务接收数据的更一般性的问题:

    - (NSString *)stringWithUrl:(NSURL *)url
    {
        NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                        cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                                        timeoutInterval:30];
            // Fetch the JSON response
        NSData *urlData;
        NSURLResponse *response;
        NSError *error;
    
        // Make synchronous request
        urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                            returningResponse:&response
                                                        error:&error];
    
        // Construct a String around the Data from the response
        return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
    }
    

    这是一个简单的 http 请求示例,对于您的后续步骤来说肯定足够了。 这个方法有一个 URL,它返回一个 NSString 中服务器发送的数据。

    一旦正常工作,您将希望避免您的应用在请求“正在播放”时冻结。 您可以通过异步请求来解决这个问题。 Google 或在 stackoverflow 上的搜索将为您提供相关示例和教程的链接。但我建议先从这里开始,尽管这可能不是最终的解决方案。

    【讨论】:

    • 你知道这个例子的视频教程吗?
    • 坦率地说,我不相信视频教程。它们很耗时,您无法剪切和粘贴样本或链接,而且很难 - 并且再次耗时 - 参考它们的某些部分。抱歉,我什么都不知道。
    【解决方案2】:

    有很多方法,但也许最简单的方法是使用现有框架 ASIHTTPRequest。

    见:http://allseeing-i.com/ASIHTTPRequest/

    【讨论】:

    • ASIHTTPRequest 已被其作者“停止”。我想现在很多人都在使用 AFNetworking... 或者只是使用 NSURLConnection
    • STHTTPRequest 看起来是另一个不错的选择。非常轻巧。
    【解决方案3】:

    以下是许多非常有名的库,您可以使用它来请求

    ASIHTTPRequest

    AFNetwork

    MFNetwork

    您可以在 google 中搜索它,在 github 中下载,或者,是的,当然,为什么不使用 Cocoapods。当我将 Objective-c 与其他语言进行比较时,这是最好的事情。

    祝你好运

    【讨论】:

      【解决方案4】:

      ASIHTTPRequest 是一个伟大而简单的框架,所以我支持其他帖子的建议。不过,为了完整起见,您还应该知道,您可以在没有其他框架的情况下在 Objective-C 中本地执行此操作。查看 Apple 文档中有关 NSURLConnection 和 NSURLConnectionRequest 类的背景信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-28
        相关资源
        最近更新 更多