我正在尝试使用以下代码从服务器获取数据。
+ (NSString *) getData:(NSString *)methodName parameters:(NSDictionary *) parameters error:(NSError **)error
{
NSString *body = [UdoziProxy getRequestBody:methodName parameters:parameters];
NSMutableURLRequest *request = [UdoziProxy createRequest:body];
// Send the request .
NSHTTPURLResponse *urlResponse = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:error];
if (responseData == nil || error !=nil) {
return nil;
}
return [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];
}当服务器运行时,它工作得很好,但是当我故意停止服务器时,responseData对象仍然有值,并且不是空的。如何处理连接中断或服务器宕机的情况?
发布于 2010-11-08 18:52:03
您需要在NSURLRequest对象上设置cache policy。如果同步API仍然不支持这一点,那么您需要切换到使用异步API,并在收到缓存请求对象时将其丢弃。如果这不起作用,那么也许你的网络有一个透明的代理,它正在为你做一些缓存。
发布于 2013-03-02 14:08:58
必须在中实现NSURLConnection委托
您可以在以下委托中获取失败状态
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{responseData =nil }
在那里,您必须将接收到的数据设置为nil值
同样,获取数据也是安全的
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {}
,指示连接已完成。
https://stackoverflow.com/questions/4123105
复制相似问题