# Typumwandlung?



## noch_anfänger (5. Mai 2010)

Hallo zusammen,

ich arbeite mit WebServices, die mir vorgegeben sind, und empfange Daten über SOAP.

```
String endpoint = "http://localhost:3773/soap/meinWebService";
Service service = new Service();
Call call1 = (Call) service.createCall();
call1.setTargetEndpointAddress(new java.net.URL(endpoint));
call1.setOperationName("GetVariableList");
char[] result7 = (char[])call4.invoke(new Object[] {});//.toString();
	    System.out.println("GetVariableList: " + result7[2]);
```

Die vorletzte Zeile verursacht den Fehler

```
java.lang.ClassCastException: [Lorg.apache.axis.types.UnsignedShort; cannot be cast to [I
```
Der Rückgabewert von GetVariableList() soll ein unsignedShort[] sein. Wie konnte man Object[] in unsignedShort[] richtig umwandeln? Oder ist es ein anderes Problem?


----------



## SlaterB (5. Mai 2010)

'in unsignedShort[] richtig umwandeln' geht mit (unsignedShort[]), du hast eher (char[]) oder (int[]) wie die Fehlermeldung sagt

die Fehlermeldung besagt auch, dass es nicht unsignedShort ist sonder UnsignedShort, und UnsignedShort ist eine org.apache-Klasse,
UnsignedShort (Axis API)

die willst du sicher nicht weiterverwenden, auch wenn ein erste Cast darauf nötig ist, 
erstelle danach ein neues Array gleicher Länge vom benötigten Typ und übertrage die Werte einzeln


----------



## noch_anfänger (5. Mai 2010)

> die willst du sicher nicht weiterverwenden, auch wenn ein erste Cast darauf nötig ist,
> erstelle danach ein neues Array gleicher Länge vom benötigten Typ und übertrage die Werte einzeln



Wie meinst Du das????:L Kannst Du das bitte erklären?


----------



## SlaterB (5. Mai 2010)

char[] erstellen
for (..) {
Objekt aus anderem Array nehmen, Wert extrahieren, ins neue Array an gleicher Position schreiben
}


----------



## noch_anfänger (5. Mai 2010)

```
call4.invoke(new Object[] {})
```
 muss ich zuerst irgendwo speichern. Kannst du bitte ausführlicher erklären?


----------



## SlaterB (5. Mai 2010)

wie gesagt, das gelieferte Array schon irgendwo speichern und auch zwingend auf UnsignedShort[] casten, denn es ist ein UnsignedShort[],
dann das Array durchlaufen und die Werte herausnehmen, falls du nicht mit dem UnsignedShort[] selber arbeiten willst,

genauer werde ich es nicht erklären, 
wer mit WebService und TargetEndpointAddress arbeitet, aber nicht weiß wie ein einfaches Array funktioniert..


----------

