【问题标题】:Converting a short URL to a full url in swift 5在 swift 5 中将短 URL 转换为完整 URL
【发布时间】:2021-07-23 11:56:30
【问题描述】:

您好,我正在尝试将 https://goo.gl/maps/MoaZNS825rpixfKu5 之类的短 URL 转换为其原始 URL https://www.google.com/maps/place/WhirlyBall+Twin+Cities/@44.8508658,-93.2389179,17z/data=!3m1!4b1!4m5!3m4!1s0x87f62f7bd688277b:0xc0ec9f7b1ccd0da8!8m2!3d44.8510743!4d-93.2366811?hl=en-US

我在类似的旧帖子中找到了一些解决方案,但它们不适用于 Xcode 12.4

我尝试使用下面的代码,但是当我尝试打印扩展 URL 时它没有返回任何值

let shortURL = "https://goo.gl/maps/MoaZNS825rpixfKu5"
func performRequest(urlString: String){

let urlString = shortURL
let url = URL(string: urlString)!
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "HEAD"

URLSession.shared.dataTask(with: urlRequest) { (data, urlResponse, error) in
    let expandedURL = urlResponse?.url?.absoluteString
    print("expandedURL HEAD: \(expandedURL ?? "Oops, not URL")")
}

.resume()
}

【问题讨论】:

  • "我在类似的旧帖子中找到了一些解决方案,但它们不适用于 Xcode 12.4" 怎么样? HEAD 请求似乎有效(快速测试):见stackoverflow.com/a/49647732/1801544 ?
  • “不适用于 Xcode 12.4”。不工作怎么办?
  • 我用我尝试使用的代码更新了问题
  • 我在 Playground 中找到了它。你如何测试它?你知道dataTask((with:handler:) 是异步的,对吧?

标签: xcode swift5


【解决方案1】:

我设法让它与下面的代码一起工作 我知道这在某种程度上是一种原始方式,但它对我有用:)

let shortURL = //"https://goo.gl/maps/MoaZNS825rpixfKu5"
"https://goo.gl/maps/xNdKp1Q1KqFeWQv99"

performRequest (urlString: shortURL)

func performRequest(urlString: String){

if let url = URL(string: urlString){
let session = URLSession(configuration: .default)
    var urlRequest = URLRequest(url: url)
    urlRequest.httpMethod = "HEAD"
let task = session.dataTask(with: urlRequest, completionHandler: handle(data:response:error:))

task.resume()
}
}


func handle (data: Data?, response: URLResponse?, error: Error?){
if error != nil {
    print (error)
    return 
}
if let safeData = data {
    let dataString = String(data: safeData, encoding: .utf8)
    let expandedURL = response?.url?.absoluteString
    print(expandedURL!)
}
}

【讨论】:

  • 不清楚,你不使用safeData 也不使用dataString。所以你只检查response?.url?.absoluteString,这是已经在做初始代码的事情......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多