Swift - Alamofire “字符 0 周围的值无效。”
Posted
技术标签:
【中文标题】Swift - Alamofire “字符 0 周围的值无效。”【英文标题】:Swift - Alamofire "Invalid value around character 0." 【发布时间】:2017-09-05 09:31:20 【问题描述】:我发现一些线程有同样的问题,但他们的答案对我不起作用。
我有一个post
请求检查用户登录。
网址形式:
“http://support.xxx.xx:8031/serpapi/login/checkLogin”
参数:
["contextInfo" :
["clientId": "1000000", "orgId": "1000001",
"warehouseId": "1000002", "roleId": "0"],
"userName": "hanoiaUser", "password": "hanoiaUser"]
请求:
Alamofire.request(url!, method: .post, parameters: params).responseJSON (response) in
print(response)
错误响应:
FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo=NSDebugDescription=Invalid value around character 0.))
为什么会出现这个错误?以及如何解决?
编辑:我尝试使用 POSTMAN 并返回响应:
内容类型:应用程序/json
正文:原始 - json
"contextInfo" :
"clientId":1000000,
"orgId": 1000001,
"warehouseId": 1000002,
"roleId": 0
,
"userName": "hanoiaUser",
"password": "hanoiaUser"
回应:
"success": true,
"data": [
"userId": 1000003,
"userName": "hanoiaUser",
"token": "b7e804d25065e5c3ac97d765180b7986"
],
"error": null
【问题讨论】:
你的服务器可能有问题 显然响应不是 JSON 有效的。你能改用responseString
给我们看那个字符串吗?
我试过了,但它返回另一个错误:“错误 415 不支持的媒体类型”
首先修复您的 Postman 请求,如果没有有效的请求,没有人可以帮助您找出您的 Swift 代码出了什么问题。
@TungVuDuc 错误 415 另一方面意味着响应类型与您的 Content-Type
标头描述的不同。例如,当您期望 JSON 响应并接收 XML 响应时,就会发生这种情况。如果您设法使您的 Postman 请求正常工作,请在您的问题中包含 Postman 请求。
【参考方案1】:
好的,我终于解决了问题
这是新的请求:
Alamofire.request(url!, method: .post,encoding : JSONEncoding.default, headers: headers, parameters: params).responseJSON (response) in
print(response)
带有标题:
let headers = [
"Content-Type": "application/json"
]
【讨论】:
谢谢,你拯救了我的一天。我知道问题出在标题中,但是我尝试了有关标题的任何解决方案但没有奏效。在 validate() 中添加内容类型,返回 responseString 和您的解决方案,在 alamofire 请求中设置标头。这是工作【参考方案2】:像这样设置请求头:
request.allHTTPHeaderFields = ["Content-Type":"application/json"]
【讨论】:
以上是关于Swift - Alamofire “字符 0 周围的值无效。”的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire 在 Swift 3、Xcode 8 中出现错误
swift Alamofire+ObjectMapper——swift(学习九)