【问题标题】:Invalid farm value returned by Flickr APIFlickr API 返回的农场值无效
【发布时间】:2020-09-26 17:50:24
【问题描述】:

我有一个在 flickr 上搜索标签并返回结果的应用程序。

结果显示在无限的集合视图中。

一次返回 100 个结果。

我开始滚动并到达滚动视图的底部。又向 Flickr 请求了 100 个元素,结果运行良好。

如果我继续向下滚动一段时间,进入第 5 页(元素 400-499)后,我开始收到此错误:

NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <D87E6C4C-B8CB-46D1-B891-3E7CDF35ABDF>.<1>"
), NSLocalizedDescription=A server with the specified hostname could not be found., NSErrorFailingURLStringKey=https://farm0.static.flickr.com/0/50255650726_a4c7ba2298.jpg, NSErrorFailingURLKey=https://farm0.static.flickr.com/0/50255650726_a4c7ba2298.jpg, _kCFStreamErrorDomainKey=12}

查看网址。

https://farm0.static.flickr.com/0/50255650726_a4c7ba2298.jpg

如果您将farm0 更改为farm1,图像就会加载。

我正在创建这样的图片下载网址:

func makeDownloadURL() -> URL{
  let path = "https://farm\(farm).static.flickr.com/\(server)/\(id)_\(secret).jpg"
  return URL(string: path)!
}

奇怪的是,如果我继续滚动查看丢失的图像,在某些时候,有效图像开始填充集合视图。然后,又是问题,又是有效图像,等等。

我正在使用它来构建搜索 URL

  func makeSearchURLComponents(searchString:String) -> URLComponents? {
    var components = URLComponents()
    components.scheme = "https"
    components.host = "api.flickr.com"
    components.path = "/services/rest"

    let queryMethod       = URLQueryItem(name: "method", value: "flickr.photos.search")
    let queryAPI          = URLQueryItem(name: "api_key", value: flickrAPI)
    let queryFormat       = URLQueryItem(name: "format", value: retrieveFormat)
    let querySafeSearch   = URLQueryItem(name: "safe_search", value: SafeSearch.Safe.rawValue)
    let querySearchString = URLQueryItem(name: "tags", value: searchString)
    let queryPageNumber   = URLQueryItem(name: "page", value: String(pageNumber))
    let querycallBack     = URLQueryItem(name: "nojsoncallback", value: "1")
    components.queryItems = [queryMethod, queryAPI, queryFormat, querySafeSearch, querySearchString, queryPageNumber, querycallBack]

    return components
  }

为什么会这样。

【问题讨论】:

  • 什么意思?农场是required attribute,不是吗?为什么是makeDownloadURL
  • 我没有使用,因为其他路径本身没有查询。所以我想我可以直接使用它。
  • 没有区别。
  • 我没有对所有图像使用farm0。农场编号由 api 返回。让我仔细检查一下。
  • 是的。 Farm 从 Flickr 返回零。我想这是一个问题......

标签: ios swift flickr


【解决方案1】:

这似乎是一个 flickr 问题。

解决办法是在farm为零的时候把它改成1。

let correctedFarm = farm == 0 ? 1 : farm

绕过他们的错误是一种技巧。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多