2017-05-07 3 views
0

보호 된 API가 있고 그에 대한 사용자 이름과 암호가 있습니다. 내가 Postman을 사용할 때 "Basic Auth"유형을 선택하고 본문에 사용자 로그인 정보와 같은 매개 변수가 있습니다. 그것은 잘 작동합니다. Alamofire의 기본 인증 헤더

enter image description here

그러나 나는 Alamofire과 같은 일을 할 노력하고있어하지만 올바른 JSON의 수익을 얻을 수 없습니다. 다음은 내가 한 일입니다.

// user auth 
    let param = ["mobile":"3", "password":"100200"] 
    let urlStr = "http://MyApi.com/api/login" 
    let url = URL(string: urlStr) 

    // api auth 
    let user = "apiUserName" 
    let password = "ApiAuthPassword" 


    var headers: HTTPHeaders = ["mobile":"001", 
           "password":"1111"] 

    if let authorizationHeader = Request.authorizationHeader(user: user, password: password) { 
     headers[authorizationHeader.key] = authorizationHeader.value 
    } 

    Alamofire.request(url!, headers: headers) 
     .responseJSON { response in 

      print(response.result.value) 
      if let value: AnyObject = response.result.value as AnyObject? { 
       //Handle the results as JSON 
       print(value) 
       let usertoken = JSON(value) 

       print(usertoken) 
      } 



    } 

이것은 nil을 반환합니다. 누군가 Alamofire로 우편 배달부 방법을 수행하는 방법을 알려줄 수 있습니까? 감사!

답변

0
let user = "your username" 

let password = "your password" 

let credentialData = "\(user):\(password)".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))! 

let base64Credentials = credentialData.base64EncodedString() 


    let headers = [ 
      "Authorization": "Basic \(base64Credentials)", 
      "Accept": "application/json", 
      "Content-Type": "application/json" ] 

//put slash before \ (base64Credentials) 

    Alamofire.request("place your url", method: .get, parameters: nil,encoding: URLEncoding.default, headers: headers) .responseJSON { response in 
     switch response.result { 
      case .success(_): 
       //your success code 
      }  
      case .failure(_): 
       //your failure code 
      } 
    }