Alamofire没有得到完整的回应

时间:2019-08-06 08:55:46

标签: swift alamofire

我正在尝试在Swift中使用Alamofire从GET请求中获取数据。有一个问题是无法从请求中获得完整的响应。响应是一个数组,其中包含一些String和一些[String:Any]的嵌套数组。我没有[String:Any]被Alamofire吸引住,并认为这是一个严重的错误。邮递员显示嵌套的数组值,但不显示Alamofire。

请求

Alamofire.request(request.getFullUrl(param: paramsForUrl), method: request.getMethodType(), parameters: data, encoding: request.getEncoding(), headers: headers).validate(statusCode: 200..<500).responseJSON { response in }

典型的响应应该是什么样子

{
  "uuid": "787FDS8-FS7FS7DG9-FSD789FCS98",
  "name": "Show time",
  "views_count": 0,
  "comments_count": 0,
  ...
  "events": [
    {
      "uuid": "f69a358e-9a1e-427c-a158-95dfc8c54ed7",
      "name": "Test",
     ...
    },
    {
      "uuid": "8993b639-f6c9-4d20-b8a9-c43c73a9828b",
      "name": "Test 2",
      ...
    },
   ...
  ]
  "times: [
   {
   "name: "test time 1",
   "clock: "Face"
   },
   {
   "name": "test time 2",
   "clock: "Back"
   }

 ]
}

缺少的内容

嵌套数组中的所有内容:events, times。如果我有一个简单的String数组,那么Alamofire会得到这些。它没有显示任何嵌套的内容,这是通过打印response.result.value和JSON解码响应并直接访问events来实现的。它看不到eventstimes

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

可能是您的JSON无效。要检查是否尝试将responseJSON更改为responseString,看看是否能打印出所有数据,例如

Alamofire.request(url ,method: .get ,parameters: data).validate().responseString{ response in
    switch response.result{
        case .success:
            let s = response.result.value ?? "nil"
            print("API Response: \(s)")
        case .failure:
            debugPrint(response)
    }
}

如果以上内容正在打印服务器中的所有数据,而您需要修复该服务

答案 1 :(得分:0)

删除 .validate(状态代码:200 .. <500),然后重试。

  Alamofire.request(url ,method: .get ,parameters: parameter).responseJSON{ response in
       switch response.result{
       case .success:
           let value = response.result.value ?? "nil"
           print("API Response: \(value)")
       case .failure:
           print("error")
        }
    }