错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 1 周围的值无效。” UserInfo=NSDebugDescription=字符 1 周围的值无效。swift 4

Posted

技术标签:

【中文标题】错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 1 周围的值无效。” UserInfo=NSDebugDescription=字符 1 周围的值无效。swift 4【英文标题】:Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 1." UserInfo=NSDebugDescription=Invalid value around character 1. swift 4错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 1 周围的值无效。” UserInfo=NSDebugDescription=字符 1 周围的值无效。swift 4 【发布时间】:2019-02-20 09:28:22 【问题描述】:

我通过邮递员收到了 api 的回复


"status": "1",
"error": false,
"message": "Your order has been placed successfully"

我调用了 api 并传递了调用 api 所需的参数。代码给出错误“字符 1 周围的值无效”。

    let urlsContainer = UrlsContainer()
    let url = URL(string: urlsContainer.allotRunnerAPI)
    let session = URLSession.shared
    var request = URLRequest(url: url!)
    let postString = "user_id=\(user_id)&pincode=\(pincode)&select_address=\(select_address)&store_id=\(store_id)"
    request.httpMethod = "POST"
    request.httpBody = postString.data(using: .utf8)
    request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    let task = session.dataTask(with: request as URLRequest, completionHandler:  data, response, error in
    guard error == nil else 
    return
    
    guard let data = data else 
    return
    

代码应该执行do代码块

do 
    let parsedData = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String: AnyObject]
    print(parsedData)
    

但现在由于代码中的一些问题,它正在执行 catch 代码块

 catch let error 
    print(error)
    
   )
  task.resume()

我无法在我的代码中找到问题来解决错误

【问题讨论】:

print(String(data:data, encoding:.utf8)!)。我猜响应不是 JSON。 @vadian 是的,打印 html 标签有什么解决方案吗? 您的语法(由 & 字符分隔的键值对)适用于 GET 请求。对于 POST 请求,您必须发送字典。 @vadian 好的,谢谢分享,其实我以前不知道,但还是有同样的问题 请仔细检查html标签的响应,你可能会找到错误的原因,还要检查你的服务api是否需要令牌,你可能忘记发送它,我遇到同样的问题,原因是忘记了发送令牌。 【参考方案1】:

使用[String:String]向api发送数据

let params = ["user_id":user_id,
"pincode":pincode,"select_address":select_address,
"store_id":store_id]
let data = JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)

将此数据作为您的身体发布

【讨论】:

从不发送到服务器的 prettyPrint JSON。服务器根本不关心易读性。省略options 参数

以上是关于错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 1 周围的值无效。” UserInfo=NSDebugDescription=字符 1 周围的值无效。swift 4的主要内容,如果未能解决你的问题,请参考以下文章

Json 错误:错误域 = NSCocoaErrorDomain 代码 = 3840“无值”。 UserInfo=NSDebugDescription=无值。

错误域 = NSCocoaErrorDomain 代码 = 3840 “字符周围的值无效

iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?

iOS:- 错误:无法创建存储目录。错误域 = NSCocoaErrorDomain 代码 = 512

如何修复“错误域 = NSCocoaErrorDomain 代码 = 3840”无价值。“UserInfo = NSDebugDescription = 无价值。”

错误域=NSCocoaErrorDomain 代码=3840 JSONObject