2011-05-02 5 views
0

Java (with Android SDK)가있는 PHP-SOAP-Webservice에 대한 SOAP 요청에 문제가 있습니다. SOAP-Helper 클래스가 있습니다. 이 클래스는 SOAP-Service에 연결하고 서버에서 모든 원시 데이터를 가져옵니다. 벡터가있는 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; 
    } 
} 

가 그럼 난 도우미 클래스에서 데이터를 가져 오는 클래스가 : 이 클래스에서 나는 다음과 같은 방법을 구현했습니다. 여기 레이어의 클래스가 있습니다. 내가 벡터의 모든 데이터를 볼 디버거와

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

:

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

지금 나는이 캐스팅 오류가 있습니다. 벡터가 비어 있지 않습니다. 모든 데이터가 정확합니다.

아이디어가 있으십니까?

+0

전체 스택 추적을 표시 할 수 있습니까? –

답변

0

대부분의 경우 개체가 soapEnvelope.getResponse()에서 반환 당신 강탈이 Vector되지 않습니다 감사합니다. Collection<SoapObject>을 사용해보세요.