2016-06-16 7 views
0

je l'ai déjà essayé beaucoup de nombreux exemples trouvés ici, mais aucun d'alors ... fonctionne l'URL est toujours nul ..Comment coder correctement URL chaîne

ici la chaîne: http://www.tst.com.br/?Nr=OR(product.productType.displayName:Acess%C3%B3rios,product.productType.displayName:Outros%20Produtos)&Ns=sku.sortPriority|0&mi=hm_ger__mntop__FUT-outros_&cm_re=mntop-_-ger_-_-_FUT-outros_____&fc=menu&test=test

  let urlSet = "http://www.tst.com.br/?Nr=OR(product.productType.displayName:Acess%C3%B3rios,product.productType.displayName:Outros%20Produtos)&Ns=sku.sortPriority|0&mi=hm_ger__mntop__FUT-outros_&cm_re=mntop-_-ger_-_-_FUT-outros_____&fc=menu&test=test" 
     guard let url = NSURL(string: urlSet ?? "") else { 
      return 
     } 

Si je décode, puis encoder à nouveau?

déjà essayé cette Solution, mais ne fonctionnent pas, l'initialisation de NSURL est toujours nul

+0

Vous devez autoriser explicitement les URL http: // '(par opposition à' https: // '). Avez-vous fait cela? Et recevez-vous des messages d'erreur? – Ike10

+0

Bien sûr, une autre demande fonctionne bien, mais seulement certains, avec ce codage ne fonctionne pas –

+0

Je ne crois pas que l'initialiseur pour 'NSURL' renvoie un optionnel. Essayez de supprimer l'instruction de garde. Votre fusion de 'nil' peut mettre la valeur à une chaîne vide. – Ike10

Répondre

0

Ce code a résolu mon problème:

extension String { 
    func encodeString() -> String { 
     let URLCombinedCharacterSet = NSMutableCharacterSet() 
     URLCombinedCharacterSet.formUnionWithCharacterSet(.URLQueryAllowedCharacterSet()) 
     URLCombinedCharacterSet.addCharactersInString("@#&=*+-_.,:!?()/~'%") 
     let urlEncoded = self.stringByAddingPercentEncodingWithAllowedCharacters(URLCombinedCharacterSet) 
     return urlEncoded ?? self 
    } 
} 
0

| est pas un caractère valide dans la chaîne URL. Vous devez lui échapper:

let query = "Nr=OR(product.productType.displayName:Acess%C3%B3rios,product.productType.displayName:Outros%20Produtos)&Ns=sku.sortPriority|0&mi=hm_ger__mntop__FUT-outros_&cm_re=mntop-_-ger_-_-_FUT-outros_____&fc=menu&test=test" 

let components = NSURLComponents() 
components.scheme = "http" 
components.host = "www.tst.com.br" 
components.path = "/" 
components.query = query.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 

let url = components.URL!