Typumwandlung?

noch_anfänger

Aktives Mitglied
Hallo zusammen,

ich arbeite mit WebServices, die mir vorgegeben sind, und empfange Daten über SOAP.
Java:
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:
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?
 
S

SlaterB

Gast
'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
 
S

SlaterB

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

SlaterB

Gast
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..
 

Neue Themen


Oben