2017-08-22 2 views
0

Dans mon application iOS, j'utilise Alamofire 4 et je veux envoyer une requête à l'arrière-plan avec des paramètres de requête. mais Alamofire convertit le "?" à "% 3F" dans la requête url (http://blahblahblah/mobile-proxy/authorizations%3FphoneNumber=+555555555&userID=agent) et j'obtiens 404 erreur de backend. J'ai lu sur URLEncoding, mais je ne trouve pas comment je peux l'utiliser avec URLRequest, parce que j'utilise un fichier enum de routeur personnalisé avec URLRequest. Ceci est une partie de mon dossier Router:Query params dans Alamofire

func asURLRequest() throws -> URLRequest { 

     let url = try Router.baseUrl.asURL() 

     var urlRequest = URLRequest(url: url.appendingPathComponent(path)) 
     urlRequest.httpMethod = method.rawValue 

     switch self { 

     case .authorizations: 
      urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") 
      urlRequest.setValue(getHeaderCredentials().operationID, forHTTPHeaderField: Constants.operationID) 
      urlRequest.setValue(getHeaderCredentials().appCode, forHTTPHeaderField: Constants.appCode) 
     case .startAuthentication, .startContractOperation: 
      urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") 
      urlRequest.setValue(getHeaderCredentials().appCode, forHTTPHeaderField: Constants.appCode) 
     case .operationAllowance: 
      urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") 
     default: 
      break 
     } 

     switch self { 

     case .authorizations: 
      urlRequest = try Alamofire.URLEncoding.queryString.encode(urlRequest, with: nil) 
     default: 
      break 
     } 

     return urlRequest 
    } 

J'essaie Alamofire.URLEncoding.queryString.encode, mais cela ne fonctionne pas.

Répondre

4

vous devez créer la chaîne de votre URL et définir urlencodage comme

let urlwithPercent = yourURlString.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed()) 
var urlRequest = URLRequest(url: URL(string: urlwithPercent)) 

ici yourURlString est une URL complète sous forme de chaîne (http://blahblahblah/mobile-proxy/authorizations%3FphoneNumber=+555555555&userID=agent)

+0

Merci! Ça a marché comme un charme! –