Android SOAP响应中断

时间:2013-01-15 16:37:02

标签: 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?

最令我困扰的是,起初它总是会发生,但现在只有当我通过我的物理设备发送请求时才会发生(现在AVD得到了正确的响应)。

此外,在开始时我决定检查流量,检查我是否收到了格式正确的响应,但我看到SOAP响应在某个时刻(节点内)被切断了。

我发现在库中引入了这个异常的提交,好吧,你可以看到它在响应为空时启动(或者我有错误):http://gitorious.org/ginger/libcore/commit/c6dae581716b9362a5c7f166c80a7f2b46ed1124/diffs?diffmode=sidebyside&fragment=1

有什么想法吗? :)

编辑:我正在附加调用的代码:

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());
    }

0 个答案:

没有答案