2010-07-01 12 views
1

Je développe l'API Twitter pour mon application. Dans mon application, je souhaite afficher la petite URL avec un lien XML analysé dans UITexField de façon dynamique. statiquement, je pouvais afficher une petite URL dans UITextField, mais dynamiquement, je ne suis pas capable d'afficher l'URL minuscule. Aidez-moi, s'il vous plaît!Problème avec l'URL minuscule

code: statiquement (travail fin),

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]; 

Dynamiquement,

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]; 

Dans ci-dessus, l'application dynamique en cours d'exécution sans avertissement et erreur, mais pas l'URL affichée et que je vérifie débogueur, l'URL et le lien sont tous les deux montrent la valeur nulle. Mais shtUrl montre la valeur entière de l'url aussi correctement.

J'ai essayé avec toutes les méthodes de classe et d'instance NSURL et les méthodes String également.

Répondre

1

Dans cette ligne de code:

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

il y a un espace après le 'api-create.php?'. Cela entraînera un espace dans la chaîne formées que vous créez et entraînera probablement URLWithString: être incapable d'analyser l'URL et de renvoyer zéro. Supprimer l'espace supplémentaire (en supposant qu'il est vraiment là et pas seulement une erreur couper-n-coller) et voir si cela résout le problème.

Il est également possible que le shtUrl que vous construisez un tinyurl pour contient des caractères spéciaux qui devraient être urlencoded (.-À-dire pour cent échappé) Essayez d'ajouter ceci:

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

pour coder le shtUrl, puis utilisez le encodedShtUrl lors de la création tiny:

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

Voir http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/ pour plus sur l'échappement.

+0

Merci, Maintenant j'ai supprimé l'espace, donc NSURL semer le lien correctement. Mais toujours la variable Link affichant une valeur nulle seulement. – Sivanathan

+0

Quelle est la valeur de tiny et url si shtUrl est "http://stackoverflow.com" par exemple? Utilisez NSLog ou le débogueur pour examiner les valeurs? L'URL générée fonctionne-t-elle si vous tapez l'url manuellement (avec un navigateur ou wget/curl)? Le problème peut-il être lié à la nécessité d'urlencoding caractères spéciaux d'échappement dans le shtUrl? –

+0

Merci beaucoup! J'ai résolu en enlevant char spécial, newline et tout. – Sivanathan