Android实际调用WebService时发生OOM错误

时间:2022-06-07 21:06:43
SoapObject soapObject = new SoapObject(NameSpace, Method);
soapObject.addProperty("part_no", szPN);
soapObject.addProperty("prix_image", param);
soapObject.addProperty("serial_flag", szType);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = soapObject;
envelope.dotNet = true;
HttpTransportSE httpSE = new HttpTransportSE(WSDL);
try {
httpSE.call(NameSpace + Method, envelope);  //这一步发生OOM错误
SoapObject resultObject = (SoapObject) envelope.bodyIn;
sresult = resultObject.getProperty(0).toString();
System.out.println("WebService Success");
} catch (Exception e) {
System.out.println("WebService Fail--->" + e.toString());
}


程序调用该WebService,返回一个字符串,当字符串里的字符个数不超过几十万的时候,程序可以正常运行,后来发现有一次返回的字符串里有八百多万个字符的时候,程序就在实际调用的那一步发生了OOM错误,上网查了下,也有人遇到类似的错误,可是没有具体的解决方案,只有人提出了分块协议,又搜了下WebService分块协议,可是没搜到,跪求大神帮个忙,该怎么处理这个OOM错误(只针对WebService调用时的这个OOM错误)

7 个解决方案

#1


自顶,调用Webservice时的内存溢出错误难道真的没有解决方案吗 Android实际调用WebService时发生OOM错误

#2


我去,真的没救了吗,还是我问题描述的不够清楚,
HttpTransportSE httpSE = new HttpTransportSE(WSDL);
httpSE.call(NameSpace + Method, envelope);执行这里对Webservice进行实际调用的时候,程序花了好几秒,运行内存一直在增加,然后就发生内存溢出错误OOM,程序就崩溃了
调用Webservice返回的是一个字符串,当字符串的字符个数不多的时候,程序正常运行,当字符数有八百多万个的时候,程序就会OOM然后崩溃

#3


问题解决了,虽然没人关注,还是说一下解决方案,其实像我这种情况的内存溢出错误(运行内存溢出),解决方案很简单,在安卓后期版本里,取消了对运行内存的大小限制,只要在Android.xml里加上一句android:largeHeap="true"就可以取消限制了, Android实际调用WebService时发生OOM错误

#4


你这个是设计上的问题了吧?怎么可以返回几百万的字符?
你这个让一些中低端的机器怎么跑?
即使你加了largeheap=true,也没有解决问题,只是当前的情况被你规避了而已。

#5


引用 4 楼 zhuobattle 的回复:
你这个是设计上的问题了吧?怎么可以返回几百万的字符?
你这个让一些中低端的机器怎么跑?
即使你加了largeheap=true,也没有解决问题,只是当前的情况被你规避了而已。

Webservice端的方法并不是我写的,几百万字符是由几十张图片转化过来的,别人这么做我也没办法,我是想要图片的URL来着的

#6


楼主 我也遇到了   这样的情况了     但是我取的数据量不大    楼主的问题解决了吗?

#7


楼主,我也遇到了这个问题,能给个QQ沟通下么?

#1


自顶,调用Webservice时的内存溢出错误难道真的没有解决方案吗 Android实际调用WebService时发生OOM错误

#2


我去,真的没救了吗,还是我问题描述的不够清楚,
HttpTransportSE httpSE = new HttpTransportSE(WSDL);
httpSE.call(NameSpace + Method, envelope);执行这里对Webservice进行实际调用的时候,程序花了好几秒,运行内存一直在增加,然后就发生内存溢出错误OOM,程序就崩溃了
调用Webservice返回的是一个字符串,当字符串的字符个数不多的时候,程序正常运行,当字符数有八百多万个的时候,程序就会OOM然后崩溃

#3


问题解决了,虽然没人关注,还是说一下解决方案,其实像我这种情况的内存溢出错误(运行内存溢出),解决方案很简单,在安卓后期版本里,取消了对运行内存的大小限制,只要在Android.xml里加上一句android:largeHeap="true"就可以取消限制了, Android实际调用WebService时发生OOM错误

#4


你这个是设计上的问题了吧?怎么可以返回几百万的字符?
你这个让一些中低端的机器怎么跑?
即使你加了largeheap=true,也没有解决问题,只是当前的情况被你规避了而已。

#5


引用 4 楼 zhuobattle 的回复:
你这个是设计上的问题了吧?怎么可以返回几百万的字符?
你这个让一些中低端的机器怎么跑?
即使你加了largeheap=true,也没有解决问题,只是当前的情况被你规避了而已。

Webservice端的方法并不是我写的,几百万字符是由几十张图片转化过来的,别人这么做我也没办法,我是想要图片的URL来着的

#6


楼主 我也遇到了   这样的情况了     但是我取的数据量不大    楼主的问题解决了吗?

#7


楼主,我也遇到了这个问题,能给个QQ沟通下么?