wake-ios/wake/Utils/LoginURLSession.swift

95 lines
3.2 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Foundation
//
//struct LoginResponse: Codable {
// let code: Int?
// let message: String?
// let [String: AnyCodable]? // token, userId
//}
// Dictionary<String, Any> Codable AnyCodable
//enum AnyCodable: Codable {}
func passwordLogin(username: String, password: String) {
guard let url = URL(string: "https://api.memorywake.com/api/v1/iam/login/password-login") else {
print("❌ 无效的URL")
return
}
// 1. URLRequest
var request = URLRequest(url: url)
request.httpMethod = "POST"
// 2.
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
// User-Agent header
request.setValue("iOS App", forHTTPHeaderField: "User-Agent")
// 3.
let parameters = [
"account": username,
"password": password
]
// 4. JSON
do {
request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: [])
} catch {
print("❌ 参数序列化失败: \(error)")
return
}
// 5.
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// 线 UI 线
DispatchQueue.main.async {
if let error = error {
print("网络错误: \(error)")
return
}
//
if let httpResponse = response as? HTTPURLResponse {
print("状态码: \(httpResponse.statusCode)")
if httpResponse.statusCode == 404 {
print("⚠️ 接口未找到,请确认:")
print("1. 后端服务是否正在运行?")
print("2. IP 和端口是否正确?")
print("3. 网络是否在同一局域网?")
return
} else if httpResponse.statusCode != 200 {
print("服务器错误: \(httpResponse.statusCode)")
}
}
//
guard let data = data else {
print("❌ 无返回数据")
return
}
//
if let jsonString = String(data: data, encoding: .utf8) {
print("响应内容: \(jsonString)")
}
// JSON
do {
if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
print("解析成功: \(json)")
// JSONDecoder LoginResponse
// let decoder = JSONDecoder()
// let loginResult = try decoder.decode(LoginResponse.self, from: data)
}
} catch {
print("❌ JSON 解析失败: \(error)")
}
}
}
//
task.resume()
}