Cha*_* SP 1 iphone url objective-c
NSString* urlEncode(NSString * url)
{
string inStr = StringFromNSString(url);
CFStringRef inStringRef = CFStringCreateWithCString( kCFAllocatorDefault, inStr.c_str(), kCFStringEncodingUTF8 );
NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)inStringRef,NULL,(CFStringRef)@"!*’();:@&=+$,/?%#[]",kCFStringEncodingUTF8 );
return encodedString;
}
Run Code Online (Sandbox Code Playgroud)
我使用上面的方法来编码网址...即使我的应用程序崩溃说
<body>
<div id="content">
<h1>An Error Was Encountered</h1>
<p>The URI you submitted has disallowed characters.</p> </div>
</body>
</html>
terminate called after throwing an instance of 'std::invalid_argument'
what():
Run Code Online (Sandbox Code Playgroud)
任何想法..我的代码有什么问题?
仅供参考:它在这个方法中崩溃JSONNode jsonObject0 = libJSON :: parse(inResponseData);
更新:我发送消息的服务器是UNIX服务器是否导致问题?
您不需要创建inStr
或inStringRef
临时变量.类型NSString*
和CFStringRef
是"免费桥梁"类型.这些类型只需简单的演员即可互换.
您可以在此处找到有关免费桥接的更多信息:http://www.mikeash.com/pyblog/friday-qa-2010-01-22-toll-free-bridging-internals.html
也就是说,您可以将方法简化为以下内容:
-(NSString*) urlEncode
{
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes( NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 );
return [encodedString autorelease];
}
Run Code Online (Sandbox Code Playgroud)
以上最好作为NSString类实现(注意使用self
as作为编码值).
归档时间: |
|
查看次数: |
5262 次 |
最近记录: |