【问题标题】:Http request command line toolHttp请求命令行工具
【发布时间】:2016-11-10 02:09:37
【问题描述】:

我正在用 Swift 3 开发一个命令行工具,我有这个代码:

let url = "www.google.com"
var request = URLRequest(url:url)
request.httpMethod = "GET"

let task = session.dataTask(with: a){ (data,response,error) in

        print("REACHED")
        handler(response,data)


}
task.resume()

如果我在任何 url 中使用“http://”或“https://”作为前缀,我无法完成任务,我想知道是否需要应用程序传输安全 plist,我已经尝试创建一个简单的 plist,有人知道这个问题是否有特殊性吗?

【问题讨论】:

    标签: http https request swift3 httprequest


    【解决方案1】:
    1. 在指定 URL 时,您需要“方案”(例如 http://https://)。

    2. urlURL,而不是 String,所以应该是:

      let url = URL(string: "http://www.google.com")!
      
    3. 是的,如果您想使用http://,则需要输入Info.plist。例如。 https://stackoverflow.com/a/37552442/1271826Transport security has blocked a cleartext HTTP 或仅搜索堆栈溢出“[ios] http info.plist”或[osx]

      注意,在 Xcode 8.1 中,控制台应用程序不一定有 Info.plist 文件,所以如果你没有,你可能需要通过按 command+n:

      更新您的目标设置以指定 plist:

      然后添加适当的设置,例如:

    4. 我假设你的URLRequest(with: a) 是指URLRequest(with: request)

    5. 在执行请求时,您需要一些东西来保持命令应用程序的运行(例如信号量或类似的东西)。

    【讨论】:

    • Rob,谢谢你的帮助,我现在正在使用 plist,但我仍然有请求问题,我认为问题与信号量有关,但我正在使用 OperationQueue 和 BlockOperation 来制作多个请求,我使用该函数等待 operationQueue.waitUntilAllOperationsAreFinished(),但我无法发出请求,当我使用 HTTP 或 HTTPS 时,操作不起作用,您能再帮帮我吗?谢谢
    • 好的,Rob,谢谢你,我将子类化操作!
    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 2019-08-09
    • 2016-08-04
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    相关资源
    最近更新 更多