猿问

关于 go-curl 的 OPT_COOKIEJAR 选项的问题

在 go-curl 中使用 OPT_COOKIEJAR 选项时,有没有办法检查工作是否完成?


如果你运行下面的源代码,就会出现一个问题,就是在cookie下载完成之前就执行了ReadFile。我想解决这个问题。


  CommonSetopt(easy)

  easy.Setopt(curl.OPT_VERBOSE, 0)

  easy.Setopt(curl.OPT_COOKIEJAR, cookieName)

  easy.Setopt(curl.OPT_URL, string("https://drive.google.com/uc?export=download&id="+gdriveID))


  log.Println("start download cookie: ", url)

  if err := easy.Perform(); err != nil {

      log.Println("cookie download fail: ", err)

      return

  }


  readBuf, err := ioutil.ReadFile(cookieName)

  if err != nil {

      log.Println("cookie read fail: ", err)

      return

  }


holdtom
浏览 60回答 1
1回答

慕沐林林

您需要在之后立即清理会话,easy.Perform而不是使用defer语句进行清理  CommonSetopt(easy)  easy.Setopt(curl.OPT_VERBOSE, 0)  easy.Setopt(curl.OPT_COOKIEJAR, cookieName)  easy.Setopt(curl.OPT_URL, string("https://drive.google.com/uc?export=download&id="+gdriveID))  log.Println("start download cookie: ", url)  if err := easy.Perform(); err != nil {      log.Println("cookie download fail: ", err)      easy.Cleanup()      return  }  // do cleanup  easy.Cleanup()  readBuf, err := ioutil.ReadFile(cookieName)  if err != nil {      log.Println("cookie read fail: ", err)      return  }
随时随地看视频慕课网APP

相关分类

Go
我要回答