我正在通过使用 UITextField 获取输入来使用字符串中的特殊字符进行 api 调用,但 alamofire 会自动将其更改为一些代码
Posted
技术标签:
【中文标题】我正在通过使用 UITextField 获取输入来使用字符串中的特殊字符进行 api 调用,但 alamofire 会自动将其更改为一些代码【英文标题】:I am making an api call using special character in string by taking input using UITextField but alamofire is automatically changing it to some code 【发布时间】:2017-11-01 06:10:04 【问题描述】:下面提到的是我用来进行 api 调用的参数
["password": "123456", "app_version": "1.0", "email": "problem’@swift.com", "device_token": "xxxxxxxxxxxxxxxxxxxxxxx", "device_type": "0"]
这是我后台的回复
SUCCESS:
message = "Data not valid";
postedData =
"app_version" = "1.0";
"device_token" = xxxxxxxxxxxxxxxxxxxxxxx;
"device_type" = 0;
email = "problem\U2019@swift.com";
password = 123456;
;
status = 0;
"validation_errors" =
email = (
"The email must be a valid email address."
);
;
我应该如何消除这个错误。 这是我使用 Alamofire 进行 api 调用的方法
func emailRegistration( email : String, deviceID: String, deviceType: String, appVersion: String, password: String )
let urlString = BaseURL + "login"
let params =
[
"email" : email,
"device_token" : deviceID,
"device_type" : deviceType,
"app_version" : appVersion,
"password" : password
]
request(urlString, method: .post, parameters: params).validate()
Alamofire.request(urlString, method: .post, parameters: params).validate()
.responseJSON responseObject in
print(responseObject)
if responseObject.result.isSuccess
let resJson = responseObject.result.value
NotificationCenter.default.post(name: Notification.Name(rawValue: NotifRequestSuccess.emailRegistration.rawValue), object: nil, userInfo: ["data": resJson])
if responseObject.result.isFailure
let error : Error = responseObject.result.error!
NotificationCenter.default.post(name: Notification.Name(rawValue: NotifRequestError.emailRegistration.rawValue), object: responseObject, userInfo: nil)
//debug//print(responseObject)
【问题讨论】:
@Sulthan 更改在电子邮件 ID 中。这就是我的后端接收数据的方式。他在收到它时将它退还给我。当我使用特殊字符时,电子邮件会自行更改 您似乎将实际存在的内容与调试器显示的内容混淆了。 我的服务器显示无效电子邮件错误。但是对于通过 android 的相同值,它工作正常。我认为我的结果有一个错误。 【参考方案1】:Alamofire 正确处理字符串,转义是 JSON 编码的一部分。您服务器上的 JSON 解析器负责解码。
来自JSON RFC:
2.5。字符串
字符串的表示类似于 C 系列编程语言中使用的约定。字符串以引号开头和结尾。除了必须转义的字符外,所有 Unicode 字符都可以放在引号内:引号、反斜线和控制字符(U+0000 到 U+001F)。
任何字符都可以转义。
【讨论】:
以上是关于我正在通过使用 UITextField 获取输入来使用字符串中的特殊字符进行 api 调用,但 alamofire 会自动将其更改为一些代码的主要内容,如果未能解决你的问题,请参考以下文章