【发布时间】:2021-12-23 21:49:58
【问题描述】:
class func postLoginRequest(url: String, parameters: Parameters?, success: @escaping (Any) -> Void, failure: @escaping (NetworkError) -> Void) {
if Network.isAvailable {
let param : [String : Any] = [
"username" : "x",
"password" : "x"
]
print (type(of: param))
print(param)
print(type(of: parameters))
print(parameters)
let manager = Alamofire.Session.default
manager.session.configuration.timeoutIntervalForRequest = Constants.NetworkError.timeOutInterval
manager.request(url, method: .post, parameters: param, encoding: JSONEncoding.default ).validate(statusCode: 200..<600).responseJSON { (response) -> Void in ...
我的数据输出如下所示;
Dictionary<String, Any>
["username": "x", "password": "x"]
Optional<Dictionary<String, Any>>
Optional(["username": Optional(<TextFieldEffects.HoshiTextField: 0x11c054600; baseClass = UITextField; frame = (41 10; 286 40); text = 'x'; opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x2821b45d0>; layer = <CALayer: 0x282f855c0>>), "password": Optional(<TextFieldEffects.HoshiTextField: 0x11c043600; baseClass = UITextField; frame = (41 10; 286 40); text = 'x'; opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x2821afe40>; layer = <CALayer: 0x282f849c0>>)])
当我使用 param 作为参数时没问题。我可以在后端(DJango)中为 jwt auth 获取用户名和密码。但是当我使用参数作为参数值时我不能。如何进行这种转换以发送 json 正文数据。
【问题讨论】:
-
不要发送
UITextField作为值,发送textField.text属性!如果需要,可以打开包装。 -
@Larme 非常感谢。错过是我的错。
-
除了您的要求之外,此代码并没有按照您的想法执行。首先,不要先检查网络可用性。苹果说不要这样做,它不会像你想象的那样工作。其次,您在将配置添加到
URLSession后对URLSessionConfiguration的修改没有影响,因此您对timeoutIntervalForRequest的设置没有任何作用。第三,timeoutIntervalForRequest与URLRequest的超时时间不同,所以它可能不是你想要的。 -
@JonShier 感谢您的意见。我会注意并检查。