【问题标题】:OKHTTP response XMLPullParserOKHTTP 响应 XMLPullParser
【发布时间】:2014-06-28 09:27:48
【问题描述】:

我正在过渡到 OKHttp,并且在我的项目中使用 SAXParser。如何解析对 SAXParser 的 OKHttp 响应?或者我还能如何使用该库解析 XML。 最初我是这样做的:

HttpResponse response = httpclient.execute(httppost);
InputStream inputStream = response.getEntity().getContent();
SAXParserFactory factory1 = SAXParserFactory.newInstance();
SAXParser parser = factory1.newSAXParser();
FormHandler handler = new FormHandler();
parser.parse(inputStream, handler);

但是使用 OKHTTP,我如何将Response response = client.newCall(request).execute() 传递给 XML 解析器?

【问题讨论】:

    标签: android okhttp android-xmlpullparser


    【解决方案1】:

    你可以试试这个:

    // 1. get a http response
    Response response = client.newCall(request).execute();
    
    // 2. construct a string from the response
    String xmlstring = response.body().string();
    
    // 3. construct an InputSource from the string
    InputSource inputSource = new InputSource(new StringReader(xmlstring));
    
    // 4. start parsing with SAXParser and handler object 
    // ( both must have been created before )
    parser.parse(inputSource,handler);
    

    PS:在您的问题中,您提到了 XMLPullParser,在您的代码中,您实际上使用的是 SAXParser。但是,如果您手头有 xml 字符串,则两种方式都可以。

    【讨论】:

    • 不错。您还可以调用 response.body().charStream() 让阅读器传递给您的解析器。如果您的 XML 文档很大(即大于 1 MiB),这将使用更少的内存。
    • 我收到Unexpected <! (position:START_DOCUMENT 我相信这是因为<!DOCTYPE html>,有人有解决方法吗?
    猜你喜欢
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2019-04-12
    • 1970-01-01
    • 2020-03-31
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多