我怎样才能获得NSURLResponse身体?

tel*_*aco 31 objective-c nsurlconnection nsurlrequest http-status-code-404

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

在委托方法中didreceiveresponse,如果状态代码是404,我取消连接,我想显示一条消息,其中包含在服务器中生成的自定义错误.

问题是,从响应对象,我只能得到状态码,标题,mimetype等,但没有身体.

我如何从中获取身体信息NSURLResponse

Özg*_*gür 27

为什么要取消连接?毕竟,404也可以拥有内容正文.只是不要取消它,让程序调用下一个委托NSURLConnection方法.当- (void)connection:(NSURLConnection *) didReceiveData:(NSData *)调用发送数据[内容正文]时,您需要在那里检索数据.阅读文档中的相应部分:

从服务器到请求的响应可以被视为两部分:描述内容的元数据和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]);

}
Run Code Online (Sandbox Code Playgroud)

  • 但是,如果您正在进行同步调用,则表示您没有使用委托方法.您立即得到结果:[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err] (2认同)