SOAP-запрос с вектором, Cast-Error - PullRequest
0 голосов
/ 02 мая 2011

У меня проблема с SOAP-запросом к PHP-SOAP-Webservice с Java (с Android SDK) У меня есть класс SOAP-Helper. Этот класс подключается к SOAP-сервису и получает все необработанные данные с сервера. В этом классе я реализовал следующий метод:

@SuppressWarnings("unchecked")
public static Vector<SoapObject> getLayers(){
    try {
        final String SOAP_ACTION = "http://www.XYZ.ch/YYY/webservice.php/getLayers";
        final String METHOD_NAME = "getLayers";

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.call(SOAP_ACTION, soapEnvelope);

        Vector<SoapObject> result = (Vector<SoapObject>)soapEnvelope.getResponse();

        return result;

    } catch (Exception e) {
        return null;
    }
}

Тогда у меня есть класс, который получает данные из вспомогательного класса. вот класс для слоев.

public void getLayers(){
    Vector<SoapObject> vectorLayers = SOAPHelper.getLayers();
    ArrayList<HashMap<String, Object>> myList = new ArrayList<HashMap<String, Object>>();

    for(int i=0; i<vectorLayers.size(); i++){                               
        HashMap<String, Object> layers = new HashMap<String, Object>();
        layers.put("layerId", vectorLayers.get(i).getProperty(0));
        layers.put("layerName", vectorLayers.get(i).getProperty(1));
        myList.add(layers);
    }
}

Теперь у меня ошибка приведения:

05-02 13:11:56.866: ERROR/AndroidRuntime(988): Caused by: java.lang.ClassCastException: java.util.Vector

С помощью отладчика я вижу все данные в векторе. Вектор не пустой. Все данные верны.

Есть идеи?

Спасибо грабят

1 Ответ

0 голосов
/ 02 мая 2011

Скорее всего, объект, возвращенный из soapEnvelope.getResponse(), не является Vector. Попробуйте просто использовать Collection<SoapObject>.

...