所以我有一些 Swift 代碼可以向我的本地主機發送請求
//
// ContentView.swift
// Shared
//
// Created by Ulto4 on 10/23/21.
//
import SwiftUI
struct ContentView: View {
var body: some View {
VStack{
Text("Hello, world!")
.padding()
Button(action : {
self.fu()
}, label: {
Image(systemName: "pencil").resizable().aspectRatio(contentMode:.fit)
})
}
}
func fu(){
let url = URL(string: "http://127.0.0.1:5000/232")
guard let requestUrl = url else { fatalError() }
var request = URLRequest(url: requestUrl)
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("Error took place \(error)")
return
}
if let response = response as? HTTPURLResponse {
print("Response HTTP Status code: \(response.statusCode)")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
}
但是,在我的 Flask 應用程式中,沒有獲取請求,并且該函式沒有運行。也沒有任何列印到控制臺。我對 swift 還很陌生,所以我真的不知道如何解決這個問題。有沒有其他方法可以快速發送請求,如果沒有,我該如何解決?
uj5u.com熱心網友回復:
您正在創建URLSessionDataTask,但您從未啟動它。打電話task.resume()。
從長遠來看,您可能會考慮使用結合,例如,dataTaskPublisher。組合非常適合 SwiftUI 模式。
uj5u.com熱心網友回復:
如果您使用的是 swift 5.5,您可以嘗試以下方法。請注意 https(另請參閱:傳輸安全已阻止明文 HTTP )。
import SwiftUI
@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
var body: some View {
VStack {
Text("testing")
}
.task {
let theData: Data? = await getData()
print("---> theData: \(theData)")
}
}
// send a request to your local host
func getData() async -> Data? {
// note the https not http, and use ! only for testing
let url = URL(string: "https://127.0.0.1:5000/232")!
do {
let (data, response) = try await URLSession.shared.data(for: URLRequest(url: url))
guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else {
print(URLError(.badServerResponse))
return nil
}
return data
}
catch {
return nil
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334174.html
上一篇:如何可視化分類頻率差
下一篇:根據行索引0洗掉列
