org.xmlpull.v1.XmlPullParserException:意外类型(位置:TEXT PK

时间:2014-08-22 07:43:46

标签: android httpresponse nsxmlparser ksoap2

使用此代码我尝试接收一个zip文件frm webservice:

    public Object GetComplex() {
    SoapObject request = new SoapObject(Constants.MAIN_URL, METHOD_NAME);
    for (NameValuePair prop : PARAMS) {
        request.addProperty(prop.getName(), prop.getValue());
    }
    SoapSerializationEnvelope envelope = getSoapSerializationEnvelope(request);
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = getHttpTransportSE(Constants.MAIN_URL+PAGE_NAME);
    Object javab = null;
    try {
        androidHttpTransport.call(Constants.MAIN_URL+METHOD_NAME, envelope);
        javab = (Object)envelope.getResponse();

    } catch (Exception e) {
        if (Constants.DEBUG)Log.i(Constants.LOGTAG,"Exception Async = "+e);
        e.printStackTrace();
    }
    return javab;
}

但到达线时 androidHttpTransport.call(Constants.MAIN_URL + METHOD_NAME,envelope); 发生此错误:

Exception Async = org.xmlpull.v1.XmlPullParserException: unexpected type (position:TEXT PK????????.^Eu...@5:163 in java.io.InputStreamReader@40568c00) 

我知道Web服务收到我的请求,检查它然后发送一个压缩文件作为响应,可以看出错误:TEXT PK是zip文件的开头。 这听起来像ksopa尝试打开并将其视为XML,因此发生此错误。 我知道这种方法从ksoap接收zip文件是不正确的,但我没有更好的主意。有没有人有解决方案?

1 个答案:

答案 0 :(得分:0)

我更改了代码,以便以这种方式接收文件:

            FileDownloadManager getUrlFile;
            getUrlFile = new FileDownloadManager(
                    Constants.MAIN_URL+
                    "zip"+File.separator+
                    guid+File.separator+
                    "Temp"+File.separator+
                    Constants.FILEZIP+"?"+
                    UUID.randomUUID().toString(), 
                    Constants.FILEZIP);
            if (getUrlFile.DownloadFromUrl()>0){
                fillSqlPriceKala(guid);
            }