2016-07-21 11 views
-2

Я не знаю почему, но когда я звоню следующий URL это дает мне BAD REQUEST - INVALID URL, хотя этот URL работает отлично на сафари браузер и другие браузеры, аNSURL возвращение ноль

http://www.ysl.com/wx/shop-product/women/top-handles#{"ytosQuery":"true","department":"handbags_tophandle_w","gender":"D","brand":"","macro":"","micro":"","season":"A,P,E","color":"","size":"","site":"","section":"","sortRule":"","yurirulename":"searchwithdepartment","microcolor":"","agerange":"","macroMarchio":"","page":"2","productsPerPage":"50","modelnames":"","look":"","washtype":"","fabric":"","prints":"","suggestion":"false","suggestionValue":"","material":"","occasion":"","weight":"","gal 

I используя следующий код:

NSString *str = [NSString stringWithFormat:@"%@",[payload stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]]; 

NSString* webStringURL = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

webStringURL = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSURL *payload = [NSURL URLWithString:webStringURL]; 

Любые Помощники? Что я делаю неправильно?

+0

'{' не является юридическим по URL-адресу. На самом деле это JSON? – Droppy

ответ

0

Не используйте stringByReplacingPercentEscapesUsingEncoding: на URL-адресе отверстия, но только по параметрам GET.

Теперь http:// также будет экранирован, поэтому становится http%3A%2F%2F, что недопустимо в качестве URL-адреса.

+0

, если вы видите, я снова добавляю новый файл по всему URL-адресу. – Shah

+0

Вы не должны, по параметрам должны быть экранированы. – rckoenes

+1

Вы не должны использовать ни один из этих методов вообще. Первый удаляет escape-последовательности (но их нет), а второй пытается добавить их обратно повсюду. Правильный способ кодирования данных URL-адресов описан на странице https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/WorkingwithURLEncoding/WorkingwithURLEncoding.html на веб-сайте разработчика Apple. Вам также понадобится (__bridge CFStringRef) ваши NSStrings и (__bridge_transfer NSString *) на обратном пути для ARC. – dgatwood