【问题标题】:Problem with Tiny URL小网址的问题
【发布时间】:2010-07-01 13:51:37
【问题描述】:

我正在为我的应用程序开发 Twitter API。在我的应用程序中,我想在 UITexField 中动态显示带有解析的 xml 链接的小 url。静态地,我可以在 UITextField 中显示微小的 url,但动态地我无法显示微小的 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 和链接都显示 nil 值。但 shtUrl 也能正确显示整个 url 值。

我也尝试了所有 NSURL 类和实例方法以及 String 方法。

【问题讨论】:

    标签: iphone objective-c nsstring nsurl


    【解决方案1】:

    在这行代码中:

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

    'api-create.php?'后面有一个空格。这将导致您正在创建的格式化字符串中出现空格,并可能导致 URLWithString: 无法解析 url 并返回 nil。

    删除多余的空间(假设它确实存在,而不仅仅是剪切-粘贴错误),看看是否能解决问题。

    您正在为其构建 tinyurl 的 shtUrl 也可能包含需要进行 urlencoded 的特殊字符(即百分比转义。)尝试添加以下内容:

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

    编码shtUrl,然后在创建tiny时使用encodedShtUrl:

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

    有关转义的更多信息,请参阅http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/。

    【讨论】:

    • 谢谢,现在我删除了空间,所以 NSURL 正确播下了链接。但仍然链接变量只显示零值。
    • 如果 shtUrl 是“stackoverflow.com”,那么 tiny 和 url 的值是多少?使用 NSLog 或调试器检查值?如果您手动(使用浏览器或 wget/curl)点击 url,生成的 url 是否有效?问题是否与需要对 shtUrl 中的特殊字符进行 urlencoding 转义有关?
    • 非常感谢!我通过删除特殊字符、换行符和所有来解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2011-06-04
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多