【问题标题】:iOS url response booliOS url 响应布尔值
【发布时间】:2014-02-27 10:19:22
【问题描述】:

返回 true 或 false 但我不知道如何在我的 IOS 应用程序中捕获该响应的网络 Web 服务。

我的服务更新数据库中的数据,我知道它可以工作,数据得到更新,它会捕获问题的响应,我想知道这样我可以告诉用户是否出现问题。

对于那些知道 c# 它是一个 bool 方法的人,只需简单的 try catch 并返回 true 或 false。

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    //What to write here to catch my true or false
    if(response) {
       //true
    } else {
       //false
    }
}

感谢您的帮助

【问题讨论】:

  • 阅读任何从 URL 获取数据的简单示例
  • 也了解 AFNetwork
  • 找到类似 satusCode 但它的 8 并且不能正确真假在这种情况下应该是 1 或 0 的东西
  • 我已经获取了 json 数据并将其放在我的应用程序中的表中,但它不是我想要读取的响应(如果它是真或假)

标签: ios objective-c nsurlconnection nshttpurlresponse


【解决方案1】:

您应该实现connection:didReceiveData: 来获取和保存 NSData 和 – connectionDidFinishLoading:,您可以将接收到的数据解释为 BOOL。

基本上didReceiveResponse: 只会让您了解服务器对您的请求的响应,而不是完整的答案。

【讨论】:

  • 谢谢我实现了这些功能,我可以接收数据,你有一个例子如何在连接完成加载功能中将其转换为布尔值?
  • 使用[NSString initWithData:encoding:]将数据转换为字符串,看看你得到了什么,可以是0/1true/false,这应该有帮助
  • 谢谢你,这有很大帮助
【解决方案2】:

您应该检查响应的 HTTP 状态代码,例如:

NSInteger statusCode = [(NSHTTPURLResponse*)response statusCode];

成功请求的状态码使用范围 [200..299]。

例如,成功的 GET 请求将显示为 200 (OK)

成功的 POST 请求将显示为 201(已创建)

成功的 DELET 请求将显示为 204(无内容)..

另请参阅:wiki List of HTTP status codes

此外,您需要检查服务器发送给您的数据类型:

NSString* mimeType = [response MIMEType];

服务器已在响应的 Content-Type 标头中发送了 MIME 类型。

另见维基MIME Internet Media Type

您实际获得的完全取决于您的请求和服务器。

例如,服务器可能总是以 JSON 作为内容类型来回答。在这种情况下,响应的标题Content-Type 将是application/json。代表答案的实际 JSON 也将与状态码相关。

为了向用户提供良好的人类可读消息,您需要查阅 Web 服务 API 并弄清楚它是如何指定的。某些 Web 服务 API 可能具有相当大的 API。不幸的是,一些网络服务缺乏全面的文档。

【讨论】:

  • 谢谢,两种情况下的响应都是 200,如果我的服务返回 false,则响应为 200,如果它为 true,则响应为 200。服务返回 json,但仅在单词 false 或 true 上,如果我在浏览器中测试它,文本 true 或 false 就不会出现像 {}... 这样的 json 语法
  • @MaddePersson 在这种情况下,响应的 MIME 类型是什么?提示:您可以通过在请求中设置 Accept 标头来明确告诉服务器您想要 JSON:[urlRequest setValue: @"application/json; charset=utf-8" forHTTPHeaderField:@"Accept"];
  • @MaddePersson 如果你有 JSON,你可能会得到这样的东西:{"result": true} - 这是一个正确的 JSON(细节取决于网络服务)。您可以使用 NSJSONSerialization 创建此 JSON 的表示。查看相关答案:stackoverflow.com/questions/22063651/…
  • 这是 JSON:[OperationContract] [WebGet(UriTemplate = "UpdateNote/{NoteID}/{Note}", ResponseFormat = WebMessageFormat.Json)] //[WebGet(ResponseFormat = WebMessageFormat.Json)] bool UpdateNote(string NoteID, string Note);
  • 单个“真”不是 JSON。所以,有些东西是假的。您能否将响应的 MIME 类型打印到控制台,例如在方法connection:didReceiveResponse: 中实现这些语句:NSString* mimeType = [(NSHTTPURLResponse*)response MIMEType]; NSLog(@"MIME: %@", mimeType);
猜你喜欢
  • 1970-01-01
  • 2017-11-13
  • 2019-12-21
  • 1970-01-01
  • 2012-01-06
  • 2016-08-02
  • 1970-01-01
  • 2019-06-11
  • 2018-10-17
相关资源
最近更新 更多