当前位置: 首页 > 面试题库 >

一种简单的解决方案,用于检查Web服务器上是否存在文件。(迅速)

潘自强
2023-03-14
问题内容

关于此的讨论很多,我了解使用委托方法并检查响应“ 404”的解决方案:

var request : NSURLRequest = NSURLRequest(URL: url)

var connection : NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()

    func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
//...
}

但我想有一个简单的解决方案,例如:

var exists:Bool=fileexists(sURL);

因为与委托在同一类中会有很多请求,并且我只想使用函数fileexists()检查响应。

有什么提示吗?

更新 我想我必须像下面这样做一个同步请求,但是我总是得到0x0000000000000000作为响应:

   let urlPath: String = sURL;
    var url: NSURL = NSURL(string: urlPath)!
    var request1: NSURLRequest = NSURLRequest(URL: url)
    var response: AutoreleasingUnsafeMutablePointer<NSURLResponse?
    >=nil
    var error: NSErrorPointer = nil
    var dataVal: NSData =  NSURLConnection.sendSynchronousRequest(request1, returningResponse: response, error:nil)!
    var err: NSError
    println(response)

问题答案:

检查服务器上是否存在资源需要发送HTTP请求并接收响应。TCP通信可能会花费一些时间,例如,如果服务器繁忙,客户端和服务器之间的某些路由器无法正常工作,网络断开等。

这就是为什么总是首选异步请求的原因。即使您认为请求只需要几毫秒,由于某些网络问题,有时有时也可能只有几秒钟。而且-众所周知-将 主线程
阻塞几秒钟是一个很大的禁忌。

综上所述,这是一种fileExists()方法的可能实现 。您已被警告!不要在主线程上使用它!

HTTP请求 方法 设置为“ HEAD”,以便服务器仅发送响应头,而不发送数据。

func fileExists(url : NSURL!) -> Bool {

    let req = NSMutableURLRequest(URL: url)
    req.HTTPMethod = "HEAD"
    req.timeoutInterval = 1.0 // Adjust to your needs

    var response : NSURLResponse?
    NSURLConnection.sendSynchronousRequest(req, returningResponse: &response, error: nil)

    return ((response as? NSHTTPURLResponse)?.statusCode ?? -1) == 200
}


 类似资料:
  • 我正在使用Apache Mina SSHD库编写一个SFTP客户端,特别是SSHD SFTP 2.3.0。我选择它而不是SSHJ库,因为它可以将字符串直接写入远程文件,并且也没有不必要的依赖关系。 任务:当将文件发送到SFTP服务器以制作先前文件的备份副本(如果有)时。 我研究了类提供的所有可能性,其中我没有找到搜索文件的简单方法。 有和方法,它们返回

  • 问题内容: 如何在Java中检查Java文件是否存在于具有URL的远程服务器上(由HTTP服务)?我不想下载该文件,只需检查其存在。 问题答案: import java.net.; import java.io. ; 如果与URL的连接(使用HttpURLConnection)以HTTP状态代码200返回,则该文件存在。 编辑: 请注意,由于我们只关心它的存在与否,所以不需要请求整个文档。我们可以

  • 问题内容: 使用javascript有没有办法判断服务器上资源是否可用?例如我有图像1.jpg-5.jpg加载到html页面中。我想每分钟或每分钟调用一个JavaScript函数,以便大致执行以下临时代码… 有什么想法吗?谢谢! 问题答案: 您可以使用类似: 显然,您可以使用jQuery / like执行您的HTTP请求。

  • 问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),

  • 问题内容: 是否可以用Java对文件系统进行XA事务访问?我想在事务范围内操作文件,并且我的事务必须通过JTA参与分布式事务(因此我认为文件系统需要作为XAResource进行访问)。我不需要支持细粒度的读/写文件访问;将每个文件都视为记录足以满足我的需求。 有谁知道一个开源项目已经做到了吗?我不想仅仅为了弄清楚已经完成而实施这种混乱。 我听到一些谣言称JBoss Transcations将增加对

  • 使用数据库时,您可以执行< code>snapshot.exists()来检查某些数据是否存在。根据文件,没有类似的储存方法。 https://firebase.google.com/docs/reference/js/firebase.storage.Reference 检查某个文件是否存在于Firebase存储中的正确方法是什么?