objective-c - 我怎样才能得到 NSURLResponse 正文?

标签 objective-c http-status-code-404 nsurlconnection nsurlrequest

我正在编写一个使用 NSURLConnection 与服务器连接的应用程序。

在委托(delegate)方法 didreceiveresponse 中,如果状态代码为 404,我将取消连接并显示一条消息,其中包含服务器中生成的自定义错误。

问题是,从响应对象中,我只能得到状态码、标题、mimetype 等,但没有正文。

如何从 NSURLResponse 获取正文消息?

最佳答案

为什么要取消连接?毕竟,404 也可以有内容主体。只是不要取消它,让程序调用下一个委托(delegate) NSURLConnection 方法。 当发送数据 [内容主体] 时 - (void)connection:(NSURLConnection *) didReceiveData:(NSData *) 被调用,您需要在那里检索数据。 Read corresponding part in the docs :

服务器对请求的响应可以看作两部分:描述内容的元数据和 URL 内容数据。 大多数协议(protocol)通用的元数据由 NSURLResponse 类封装,由 MIME 类型、预期内容长度、文本编码(如果适用)和提供响应的 URL 组成。

NSURLConnection 和 NSURLDownload 类提供接口(interface)来建立由 NSURLRequest 对象指定的连接并下载内容。NSURLConnection 对象在从原始源接收到数据时向委托(delegate)提供数据,而NSURLDownload 对象将请求数据直接写入磁盘。这两个类都为响应重定向、身份验证挑战和错误条件提供了广泛的委托(delegate)支持。

关于示例委托(delegate)实现:

-   (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{
    NSLog(@"String sent from server %@",[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]);

}

关于objective-c - 我怎样才能得到 NSURLResponse 正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3014206/

相关文章:

python - Flask 路由在 URL 中给出带有 float 的 404

ios - NSURLConnection 正在返回旧数据

iphone - 委托(delegate)混淆 .. 我如何知道几个委托(delegate)何时完成了他们的任务?

ios - 在 UITableView 的自定义单元格中引用 UITextFields

python - Flask 模板在本地环境中工作,但在 nginx 下返回错误 404

wcf - OPTIONS 预检请求未到达 IIS 托管服务

ios - 使用 NSURLConnection 的异步下载被证明是不可靠的

ios - 将非常大的 NSData 上传到服务器的正确方法是什么?

iphone - 如何根据宽高比调整图像大小?

objective-c - 以编程方式选择 NSMatrix 的项目