使用此代码我尝试接收一个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文件是不正确的,但我没有更好的主意。有没有人有解决方案?
答案 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);
}