Objective c 使用NSURLRequest的stringWithContentsOfURL的等效代码是什么?
但是,我在网上读到,如果我想添加一个超时,我可能应该使用一个NSURLRequest。第一个代码工作正常,但第二个代码总是返回@notnil,just。有人有什么建议吗 我还了解到,NSURLConnection可以处理任何类型的web压缩,而NSURLRequest不能处理这种情况,因此我认为最好选择更全面的解决方案。Objective c 使用NSURLRequest的stringWithContentsOfURL的等效代码是什么?,objective-c,networking,timeout,nsurlconnection,nsurlrequest,Objective C,Networking,Timeout,Nsurlconnection,Nsurlrequest,但是,我在网上读到,如果我想添加一个超时,我可能应该使用一个NSURLRequest。第一个代码工作正常,但第二个代码总是返回@notnil,just。有人有什么建议吗 我还了解到,NSURLConnection可以处理任何类型的web压缩,而NSURLRequest不能处理这种情况,因此我认为最好选择更全面的解决方案。 谢谢你的好建议。代码今早神奇地工作了,所以我猜我的Web服务器昨晚出故障了。你试过检查错误了吗?如果连接出现问题,那么它可能有一个值。我建议您使用异步网络调用,而不是使用Se
谢谢你的好建议。代码今早神奇地工作了,所以我猜我的Web服务器昨晚出故障了。你试过检查错误了吗?如果连接出现问题,那么它可能有一个值。我建议您使用异步网络调用,而不是使用SendSynchronousRequest。要编写的代码稍微多了一点,但它可以避免为避免锁定主线程而必须执行线程。作为奖励,它还可以取消请求。好主意,卢默,但我仍然想把它放在另一个线程中,因为我相信如果我不这样做,它仍然会在主线程中阻塞。异步网络调用永远不会阻塞主线程。他们被设计成不这样做。
NSURL *url = [NSURL URLWithString:escapedUrlString];
NSString *responseString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSString *escapedUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *responseString;
NSURLResponse *response;
NSError *error;
NSURLRequest *request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL URLWithString:escapedUrlString]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:5]; // 5 second timeout?
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]){
NSLog(@"Recieved String Result: %@", responseString);
} else {
NSLog(@"Response String is null!");
}