2016-11-10 28 views
1

我在斯威夫特3開發一個命令行工具,我有這樣的代碼:Http請求命令行工具

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() 

如果我使用我不能達到任務的「http://」或「https:/ /「作爲前綴在任何網址,我想知道如果我需要一個應用運輸安全plist,我已經嘗試創建一個簡單的plist,任何人都知道一些如果有這個問題的特殊性?

回答

1
  1. 當指定一個URL時,需要的 「方案」(例如http://https://)。

  2. urlURL,不是String,所以它應該是:

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

    注意,在Xcode 8.1,控制檯應用程序不一定有Info.plist文件,所以如果你沒有一個,你可能必須按命令 + ň添加一個:

    add plist

    更新你的目標設置來指定的plist:

    plist target settings

    ,然後添加適當的設置,例如:

    enter image description here

  4. 我認爲,你必須URLRequest(with: a)你的意思URLRequest(with: request)

  5. 當你執行請求時(例如信號量或類似的東西),你需要一些東西讓命令應用程序保持活動狀態。

+0

羅布,感謝你的幫助,我使用的plist現在,但我仍然有要求的問題,我認爲問題是關於信號,但我使用OperationQueue和BlockOperation進行多次請求,我使用該函數等待operationQueue.waitUntilAllOperationsAreFinished(),但我無法發出請求,當我使用HTTP或HTTPS,操作不起作用,你能再次幫助我嗎?謝謝 – eduardo

+0

好的,羅布,謝謝,我將繼續操作! – eduardo