1

我最近开始在 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());
    }
4

0 回答 0