无法用 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 解析的主要内容,如果未能解决你的问题,请参考以下文章

无法解析响应 alamofire swift 3

使用 alamofire 在 Swift 上解析 Json

Json 解析 Swift 3 Alamofire

swift、Alamofire、SwiftyJSON:如何解析 arrayObject

Swift Alamofire 无法解析 POST 请求中的响应 JSON 字符串

无法使用闭包使用 alamofire 解析 json