【问题标题】:URLSession: Follow a redirect from Google SpreadsheetURLSession:遵循来自 Google 电子表格的重定向
【发布时间】:2021-09-12 04:57:32
【问题描述】:

我正在使用谷歌表单来收集数据,用户可以上传图片。这将存储在一个谷歌电子表格中,该电子表格发布到网络上,然后我将其作为 json 文件抓取。

在 json 中,图片 URL 的格式为:https://drive.google.com/open?id=xxxx

如果我 curl -I 那个 URL,我会得到一个状态码 HTTP/2 307。如果我curl -L 它会重定向,我就会得到我想要的。

但如果我将该 URL 与 URLSession 一起使用,我会收到 200 响应:

po print(response)
Optional(<NSHTTPURLResponse: 0x600002d3e460> { URL: https://drive.google.com/file/d/xxx/view?usp=drive_open } { Status Code: 200, Headers { etc...

这就是我想要的网址!为什么URLSession,谁是“默认是遵循重定向”,正确地重定向并给我那个页面?我是否必须解析出所需的 URL,然后再拨打 URLSession 电话?

【问题讨论】:

    标签: swift google-sheets urlsession


    【解决方案1】:

    事实证明这比我想象的要容易。存储在 google 电子表格(或至少最初存储自 google forms doc)中的图像 URL 采用以下格式:

    https://drive.google.com/open?id=1M-BjN3..nonce..lbl9
    

    如果我们将字符串 open?id 更改为 uc?id,则该字符串将转换为指向图像的有效 URL。

    https://drive.google.com/uc?id=1M-BjN3..nonce..lbl9
    

    在斯威夫特中:

    let corrected = imageUrl.replacingOccurrences(of: "open?id", with: "uc?id")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多