При использовании Alamofire, что означает, что значение типа кортежа не имеет значения члена validate? - PullRequest
0 голосов
/ 01 июля 2018

Я работаю над решением для аутентификации в Microsoft Azure с использованием токенов-носителей JWT, которое использует не простое имя пользователя и пароль, а идентификатор клиента, секрет клиента и два других параметра. Процесс аутентификации работает при запуске в Postman, однако, когда я воссоздаю решение в Xcode с помощью Alamofire, он отображает ошибку 400. Я хотел бы распечатать на консоль запрос Alamofire, чтобы мы могли видеть, как Alamofire структурирует URL.

Когда я пытаюсь поместить метод класса запроса Alamofire в функцию печати, он не скомпилируется, и я получаю сообщение об ошибке Xcode:

Value of tuple type '()' has no member 'validate'

Вот строка кода, где я пытаюсь распечатать на консоли:

print(Alamofire.request(authorizationURL, method: .post, parameters: parameters, encoding: URLEncoding(destination: .queryString), headers: headers))

1 Ответ

0 голосов
/ 01 июля 2018

Я понял, что поместил оператор печати в блок запроса Alamofire перед моим оператором .validate. Перемещая оператор печати за пределы оператора запроса, он работает.

import UIKit
import Alamofire
import SwiftyJSON


class Stackoverflow: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        Stackoverflow.getAzureTokenOld()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @objc class func getAzureTokenOld(){

        let authorizationPath: String = "https://login.microsoftonline.com/tenantID/oauth2/token"
        if let authorizationURL: URL = URL.init(string: authorizationPath){
            //do stuff with your authorization url
            let parameters: [String: Any] = [
                "grant_type" : "client_credentials",
                "client_id" : "testID",
                "client_secret" : "testSecret",
                "resource" : "https://rest.media.azure.net"
            ]

            let headers = [
                "Content-Type": "application/x-www-form-urlencoded",
                "Keep-Alive": "true"
            ]
            Alamofire.request(authorizationURL, method: .post, parameters: parameters, encoding: URLEncoding(destination: .queryString), headers: headers)



                .validate(statusCode: 200..<300)
                .responseJSON { response in
                    switch response.result {
                    case .success:
                        print("Validation Successful")
                        let value = response.result.value
                        print("The valued response is: \(String(describing: value))")
                    case .failure(let error):
                        print(error.localizedDescription)
                    }
                    debugPrint("checking checking: \(response)")
            }
            print(Alamofire.request(authorizationURL, method: .post, parameters: parameters, encoding: URLEncoding(destination: .queryString), headers: headers))
        }

    }
}
...