无法用 Alamofire 和 swift 解析
Posted
技术标签:
【中文标题】无法用 Alamofire 和 swift 解析【英文标题】:Unable to parse with Alamofire and swift 【发布时间】:2020-03-18 12:32:07 【问题描述】:我正在尝试模拟这个 java 代码:
try
Connection.Response programacion1 = Jsoup.connect(URLProg1)
.cookies(cookies)
.data(formData2)
.method(Connection.Method.POST)
.userAgent(USER_AGENT)
.execute();
Document programacion= programacion1.parse();
Elements table = programacion.select("table").tagName("datos"); //select the table.
Elements rows = table.select("tr");
FileWriter programacionTexto = null;
PrintWriter pw1 = null;
使用 AlamoFire 5 使用这个 Alamofire swift 代码:
AF.request(URLProg1, method: .post, parameters: parametersProgramcion, encoding: URLEncoding.httpBody).responseString
(response3) in
let value = response3.value
let json = JSON(response3.value)
let table = json["datos"]
let rows = table["tr"]
witch 我不知道它对最终目标是否正确。不过,这是我运行应用程序时的主要问题,我可以调试打印(在需要时)html 输出,但响应请求带来 nil(见图),所以 json 也是 0 等等,因此,我无法使用数据。就像它不解析或类似的东西。你能帮我解决这个问题吗?
顺便说一句,我也确实使用了 responseJSON,但我也看到了同样的问题,即“0 附近没有字符”问题。
这是调试状态
【问题讨论】:
value
显然是 HTML 字符串,而不是 JSON。
@mag_zbc 我认为是由于 ResponseString 运算符。问题是 Request 值为 nil,我不知道为什么,即使我可以调试打印它。
这是因为您的 API 返回的是 HTML,而不是 JSON。不像服务器返回一个 JSON,Alamofire 神奇地将它变成了 HTML。
非常感谢您的帮助。我现在所做的是将 RensponseString 更改为 ResponseJSON 并通过使用 Let value= response.value 和添加 let JSONvalue=value 作为 NSDICTIONARY 来使用 SwiftyJSON(如 SwiftyJSON API 中所述),但结果是相同的.在 result3.value 我仍然有一个零。我不明白发生了什么。
正在发生的事情是你得到一个 HTML 作为响应,而不是 JSON。究竟是什么不清楚?你期待 Alamofire 神奇地将 HTML 转换为 JSON 吗?
【参考方案1】:
找到它。由于响应是一个 HTML,我使用 swiftSoup 来解析和使用它。谢谢大家,我没有注意到我没有收到 JSON 对象作为响应。
【讨论】:
以上是关于无法用 Alamofire 和 swift 解析的主要内容,如果未能解决你的问题,请参考以下文章
swift、Alamofire、SwiftyJSON:如何解析 arrayObject