首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMutableUrlRequest吃加号

NSMutableUrlRequest吃加号
EN

Stack Overflow用户
提问于 2010-03-22 18:19:39
回答 3查看 2.3K关注 0票数 5

我创建了用于向服务器发送数据的NSMutableUrlRequest,向其中添加所有必需的字段,然后添加要发送的字符串,如下所示:

代码语言:javascript
复制
[theRequest setHTTPBody:[postString dataUsingEncoding: NSUTF8StringEncoding]];

postString是一个常见的NSString。

问题是,当我在服务器上收到这个请求时,所有的加号(+)都从http主体中消失了。所以如果我在iPhone上有"abcde+fghj“,我会在服务器上得到"abcde fghj”。

这会不会是使用dataUsingEncoding: NSUTF8StringEncoding时的一些编码问题?或者是一些NSMutableUrlRequest剥离功能?我该怎么做才能让它停止剥离加号标志?我需要在服务器端接收UTF8字符串。

EN

回答 3

Stack Overflow用户

发布于 2010-03-22 18:39:42

加号(+)是表示standard shortcut查询字符串部分中空格的符号。如果需要文字+,请将其编码为%2b。

票数 4
EN

Stack Overflow用户

发布于 2010-03-22 18:53:16

可能是服务器不知道哪个是帖子主体的编码。您是否尝试过将charset=UTF-8添加到请求的头部中,如下所示:

代码语言:javascript
复制
[theRequest setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
票数 0
EN

Stack Overflow用户

发布于 2019-08-13 19:23:34

例如,您需要使用"Content-Type" -> "application/x-www-form-urlencoded"data发布到后端

应用程序/x-www-form-urlencoded:键和值以“&”分隔的键值元组进行编码,键和值之间有一个“=”。键和值中的非字母数字字符都是百分比编码的:这就是为什么这种类型不适合用于二进制数据的原因(改为使用multipart/form-data )

Reference

您可以通过对Swift中的字符串应用函数addingPercentEncoding对数据进行百分比编码:

代码语言:javascript
复制
guard let jsonString = String(data: jsonData, encoding: .utf8)?.addingPercentEncoding(withAllowedCharacters: .alphanumerics) else {
   failureCompletion()
   return
}

var request = URLRequest(url: url)
...
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpBody = "jsonString".data(using: .utf8)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2491351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档