将 NSString 转换为可在 HTTP POST 请求中传递的形式

发布于 2024-12-27 22:44:45 字数 387 浏览 4 评论 0原文

有没有一种简单的方法来转义 NSString,以便我可以在 HTTP POST 请求中使用它?

我尝试过 stringByAddingPercentEscapesUsingEncoding,但以下:

[@"~!@#$%^&*()-+\"'" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

给了我:

~!@%23$%25%5E&*()-+%22'

在 HTTP POST 查询中不可用,因为 & 未转义;因此,另一端将其后面的任何内容解释为另一个参数。

Is there a simple way to escape a NSString so I can use it in a HTTP POST request?

I've tried stringByAddingPercentEscapesUsingEncoding, but the following:

[@"~!@#$%^&*()-+\"'" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

gives me:

~!@%23$%25%5E&*()-+%22'

which is not usable in a HTTP POST query because the & is left unescaped; therefore the other end interprets whatever follows it as another argument.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一袭水袖舞倾城 2025-01-03 22:44:45

以下函数是 NSString+URLEncoding.m 的一部分,完全满足我的需要:

- (NSString *)encodedURLParameterString {
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                       (CFStringRef)self,
                                                                       NULL,
                                                                       CFSTR(":/=,!
amp;'()*+;[]@#?"),
                                                                       kCFStringEncodingUTF8);
    return [result autorelease];
}

The following function, part of NSString+URLEncoding.m, does exactly what I need:

- (NSString *)encodedURLParameterString {
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                       (CFStringRef)self,
                                                                       NULL,
                                                                       CFSTR(":/=,!
amp;'()*+;[]@#?"),
                                                                       kCFStringEncodingUTF8);
    return [result autorelease];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文