2016-06-16 3 views
0

Я уже пробовал много много примеров найти здесь, но ни один из то не работает ... адрес всегда ноль ..Как правильно кодировать URL Строка

здесь строку: 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 
     } 

В случае, если i декодировать, а затем снова закодировать?

Уже пробовал этот Solution, но не работают, инициализация NSURL всегда ноль

+0

Вы должны явно разрешить 'http: //' URL (в отличие от 'https: //'). Вы это сделали? И вы получаете сообщения об ошибках? – Ike10

+0

Уверен, другие запросы работают нормально, но только некоторые, с этой кодировкой не работает –

+0

Я не верю, что инициализатор для 'NSURL' возвращает необязательный. Попробуйте удалить инструкцию охраны. Ваш коллапс 'nil' может устанавливать значение в пустую строку. – Ike10

ответ

0

Этот код решить мою проблему:

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

| не является допустимым символом в строке URL. Вам необходимо избегать этого:

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! 
Смежные вопросы