Проблема с крошечным URL - PullRequest
1 голос
/ 01 июля 2010

Я разрабатываю Twitter API для своего приложения. В моем приложении я хочу отображать крошечный URL-адрес с анализируемой ссылкой XML в UITexField как динамически. Статически, я мог бы отображать крошечный URL в UITextField, но динамически я не могу отобразить крошечный URL. Пожалуйста, помогите мне!

Код: статически (работает нормально),

NSURL *url = [NSURL URLWithString"http://tinyurl.com/api-create.php?
url=https://gifts.development.xxxxx.edu/xxxx/Welcome.aspx?appealcode=23430"];

NSString *link = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding    error:nil]; 

Динамически

NSString * tiny = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php? url=%@", shtUrl];//shtUrl is parsed string 

NSURL *url = [NSURL URLWithString:tiny];

NSString *link = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding    error:nil]; 

Выше, динамически приложение работает без предупреждения и ошибки, но URL не отображается, и когда я проверяю отладчик, URL и ссылка оба показывают нулевое значение. Но shtUrl показывает полное значение URL как должным образом.

Я пробовал все методы класса и экземпляра NSURL, а также методы String.

1 Ответ

1 голос
/ 01 июля 2010

В этой строке вашего кода:

NSString * tiny = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php? url=%@", shtUrl];

после «api-create.php?» Есть пробел.Это приведет к пробелу в форматированной строке, которую вы создаете, и, вероятно, приведет к тому, что URLWithString: не сможет проанализировать URL-адрес и вернуть nil.

Удалите лишний пробел (при условии, что он действительно есть и непросто ошибка вырезания и вставки), и посмотрите, решит ли это проблему.

Возможно также, что shtUrl, для которого вы создаете tinyurl, содержит специальные символы, которые необходимо будет кодировать по урлену (т. е. процентизбежал.) Попробуйте добавить это:

NSString * encodedShtUrl = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                                               (CFStringRef)shtUrl,
                                                                               NULL,
                                                                               (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
                                                                               kCFStringEncodingUTF8 );

для кодирования shtUrl, затем используйте encodedShtUrl при создании tiny:

NSString * tiny = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php? url=%@", encodedShtUrl];

См. http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/ чтобы узнать больше о побеге.

...