在iOS中,我想在下载时从服务器解析
XML流.它不应该等到服务器完成构建XML并且下载完成.服务器以“chunks”形式构建XML,并将其直接发送到客户端.在我的应用程序中,我有一个UITableView,一旦我从服务器接收到它,应立即显示XML的元素.
我已经尝试使用XMLParser(contentsOf:URL)构造函数,但是这首先下载整个XML,然后解析它.还有另一个构造函数XMLParser(stream:InputStream),但是我不知道如何从URLConnection获取一个InputStream.我发现的唯一的事情是this question这是将近5岁,我不明白如何在Swift 3中做到这一点,如果它甚至起作用.
我尝试的另一件事是通过Libxml2,但是我有RAM使用或其他事情的问题(见我的old question).
如何解析XML流,而不必等待Swift的完整下载?
在Android中,我将使用XMLPullParser并具有:
URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setDoInput(true); InputStream inputStream = connection.getInputStream(); XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance(); XmlPullParser pullParser = xmlFactoryObject.newPullParser(); pullParser.setInput(inputStream,null); // here comes the actual parsing
解决方法
也许客户端/服务器有一些Session-Cookies有问题吗?尝试在每个请求后删除它们:
// Loops through each of the cookies and deletes them. let cookieStore = HTTPCookieStorage.shared for cookie in cookieStore.cookies ?? [] { cookieStore.deleteCookie(cookie) }