2009-05-29 10 views
2

Ich versuche, ein Byte-Array von meiner Blackberry-Anwendung an einen .NET-Webdienst (asmx) zu senden.Byte-Array von Blackberry an .NET Webservice übergeben

Ich verwende das Sun Java Wireless Toolkit (WTK) 2.5.2, um die Webservice-Stubs zu generieren, die in der Blackberry-Lösung verwendet werden. Die WTK-Projekteinstellungen erzeugen die Stubs unter Verwendung der JSR 172-Spezifikation.

ich den Webservice .NET erstellt habe 2005 die folgende Methode:

[WebMethod] 
public string UploadImage(byte[] Data, string Name) 
{ 
    //do stuff 
} 

ich den Stummel aus der WSDL dieses Webservice erzeugen, aber ich erhalte: „Fehler: Gefunden unbekannt einfachen Typen: byte [] ". Ich habe diese Methode der Generierung von Stubs verwendet und ich habe noch keine Fehler erhalten, alle Eingabevariablen waren einfache Typen, aber ich habe dies verwendet, um Arrays von benutzerdefinierten Objekten zurückzugeben. Wenn ich die WSDL-Datei überprüfe, ist der Typ base64Binary.

Kann ich etwas anderes als das Byte-Array verwenden, um die Daten zu übergeben? Oder gibt es eine Art von Einstellung, die ich vermisse, damit der Webservice ein Byte-Array verwenden kann?

Antwort

4

Das Beste, was zu tun ist, ist wahrscheinlich nur den Parameter als String anzugeben. Base64 ist ASCII-Darstellung von Binärdaten.

3

Sie haben die Methode deklarieren mit String anstelle von byte []. Dann können Sie das folgende Snippet auf der Clientseite verwenden:

byte[] chunk = ...; 
String data= Base64OutputStream.encodeAsString(chunk, 0, chunk.length, false, false); 
UploadImage(data, name) 

and on the server side you can use: 

byte[] byteArray; 
byteArray = Base64.decode(data);