Android SOAP响应中断
我最近开始在使用Android处理kSOAP2时遇到一些问题,特别是在收到响应时。以下是使用多个AVD和一个物理设备测试的问题: 我开始向在本地计算机上运行的web服务发送请求,收到响应时通常会出现以下异常Android SOAP响应中断,android,web-services,soap,ksoap2,Android,Web Services,Soap,Ksoap2,我最近开始在使用Android处理kSOAP2时遇到一些问题,特别是在收到响应时。以下是使用多个AVD和一个物理设备测试的问题: 我开始向在本地计算机上运行的web服务发送请求,收到响应时通常会出现以下异常 01-15 17:15:43.819: E/SOAP(2904): java.lang.IllegalStateException: getInputStream() is not available. Is this a reentrant call? 最让我烦恼的是,起初它总是会发生,
01-15 17:15:43.819: E/SOAP(2904): java.lang.IllegalStateException: getInputStream() is not available. Is this a reentrant call?
最让我烦恼的是,起初它总是会发生,但现在只有当我通过我的物理设备发送请求时才会发生,现在AVD得到了正确的响应
此外,在开始时,我决定检查通信量,检查是否接收到格式正确的响应,但我看到SOAP响应只是在节点内的某个点被切断
我在库中找到了引入此异常的提交,正如您所看到的,它是在响应为null或有错误时启动的,我猜:
有什么想法吗
编辑:我将代码附加到拨打电话的位置:
ListRQ rq = new ListRQ(c, l, s, "");
PropertyInfo pi = new PropertyInfo();
pi.setName("request");
pi.setValue(rq);
pi.setType(rq.getClass());
request.addProperty(pi);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(request);
envelope.addMapping(Params.NAMESPACE, "ListRQ", ListRQ.class);
MarshalDouble md = new MarshalDouble();
md.register(envelope);
HttpTransportSE htse = new HttpTransportSE(Params.URL);
htse.debug = true;
try {
htse.call(Params.GetList.SOAP_ACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
Log.d("SOAP", response.toString());
}
catch(Exception e) {
Log.e("SOAP", e.toString());
}
我不确定您是否应该多次调用getInputStream我们需要查看您的代码以提供更多建议,但正如@njzk2所说,您可能在同一个连接上调用getInputStream两次。可能来自不同的线程,也可能不是。