用Objective-C URLEncoding一个字符串

用Objective-C URLEncoding一个字符串,第1张

概述我正在尝试对一个字符串进行URL编码以形成来自 objective-c的GET请求. NSString *params = @"'Decoded data!'/foo.bar:baz";NSRunAlertPanel( @"Error", [params urlEncoded], @"OK", nil, nil ); 这是扩展NSString的类别 -(NSString *) urlEncod 我正在尝试对一个字符串进行URL编码以形成来自 objective-c的GET请求.

Nsstring *params = @"'Decoded data!'/foo.bar:baz";NSRunAlertPanel( @"Error",[params urlEncoded],@"OK",nil,nil );

这是扩展Nsstring的类别

-(Nsstring *) urlEncoded{    Nsstring *encoded = (Nsstring *)CFURLCreateStringByAddingPercentEscapes(                                                   NulL,(CFStringRef)self,NulL,(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",kcfStringEnCodingUTF8 );    return encoded;}

所以我第一次跑,我回来了

1606410046ecoded          1606410784ata2270.000000foo.bar0X1.001716P-1042baz

从对话框.

在我再次运行之后立即得到这个

1606410046ecoded          1606410944ata227369374562920703448982951250259562309742470533728899744288431318481119278377104028261651081181287077973859930826299575521579020410425419424562236383226511593137467590082636817579938932512039895040.000000foo.bar0X1.66E6156303225P+771baz

那么如果我再运行它,那么它会回到第一个.真的很奇怪

如果参数设置为@“&”或@“”我只是在对话框中回到“2”(w / o的引号).

还有一种方法可以在警报对话框中显示%符号吗?

谢谢

解决方法 我认为NSAlert正在将%字符解释为用随机数据填充的字符串格式说明符.只是NSLog的输出,它的罚款:

%27Decoded%20data%21%27%2Ffoo.bar%3Abaz

此外,您的-urlEncoded类别方法中有内存泄漏.您使用包含Create的CF函数创建字符串,因此您需要释放它.

-(Nsstring *) urlEncoded{   CFStringRef urlString = CFURLCreateStringByAddingPercentEscapes(                                                   NulL,kcfStringEnCodingUTF8 );    return [(Nsstring *)urlString autorelease];}
总结

以上是内存溢出为你收集整理的用Objective-C URLEncoding一个字符串全部内容,希望文章能够帮你解决用Objective-C URLEncoding一个字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1028046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存