我正在编写一个使用 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/