我正在编写一个使用NSURLConnection
与服务器连接的应用程序。
在委托方法didreceiveresponse
中,如果状态代码为404,我取消连接,并且我希望显示一条消息,其中包含在服务器中生成的自定义错误。
问题在于,从响应对象,我只能获取状态码,标题,mimetype等,但没有正文。
如何从NSURLResponse
获取正文消息?
答案 0 :(得分:27)
为什么取消连接?毕竟,404也可以拥有内容正文。只是不要取消它,让程序调用下一个委托NSURLConnection方法。
当调用[内容正文]发送数据- (void)connection:(NSURLConnection *) didReceiveData:(NSData *)
时,您需要在那里检索数据。 Read corresponding part in the docs:
服务器对请求的响应可以视为两部分:描述内容的元数据和URL内容数据。 大多数协议通用的元数据由NSURLResponse类封装,包含MIME类型,预期内容长度,文本编码(如果适用)以及提供响应的URL。
NSURLConnection和NSURLDownload类提供了一个接口,用于建立由NSURLRequest对象指定的连接并下载内容。 NSURLConnection对象在从发起源接收代理时向其提供数据,而NSURLDownload对象将请求数据直接写入磁盘。这两个类都为响应重定向,身份验证挑战和错误条件提供了广泛的委托支持。
关于代表实现的示例:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{
NSLog(@"String sent from server %@",[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]);
}