Domino 9 und frühere Versionen > ND8: Entwicklung

WebService und XSD_BASE64BINARY

(1/1)

0xse:
Hallo zusammen,

ich versuche via WebService (Domino 8.5.2) eine Datei auszuliefern, leider funktioniert das nicht =)

Call eObjekt.ExtractFile(Pfad & eObjekt.Name)

Set mStream = session.CreateStream()
Call mStream.Open(Pfad & eObjekt.Name)
Print "Bytes gelesen: " & mStream.Bytes
[...]
Call mStream.Close()

Der Code, das abhängen einer Datei aus einem RichText Feld, funktioniert. Das laden in den Stream auch, zu sehen an der korrekten Anzahl ausgegebener Bytes. Für die Rückgabe aus dem WebService muss ich mit XSD_BASE64BINARY arbeiten. Hierzu gibt es eine Variable retval mit dem entsprechenden Typ. In obigem Code wird an der Stelle [...] folgendes ausgeführt:

Call retval.setValueFromNotesStream(mStream)

Hier liegt irgendwo das Problem (aufgetreten mit einem PHP Consumer). Wenn ich den WebService mit SoapUI zur Diagnose aufrufe, bleibt das Problem bestehen.

Es werden nur die letzten ca. 22.000 Zeichen des Base64 Strings vom Domino zurück übergeben. Die Testdatei ist 55kb groß. Der zurückgelieferte String begint bei ca. 33kb der Datei und geht bis zum letzten Zeichen der Datei. Aber der Anfang der Datei fehlt.

Etwas hinderlich bei dem Ganzen ist die mangelnde Dokumentation der WebService Datentypen seitens IBM. Allein wenn man nach der Methode setValueFromNotesStream googlet, gibt es nur extrem wenige Einträge. Macht es nicht unbedingt einfacher =)

Hat jemand dieses Problem schon mal gehabt oder weiß eine Lösung? Ggf. auch eine Alternative zur Übertragung größerer Dateien via WebService und Notes?

Viele Grüße,
0xse

m3:
Ich hab das letztes Jahr schon gemacht (und damit 2 PMRs und einen HotFix erzeugt), weil das Zeug derartig buggy ist ....
Ich hab nur keine Code bei der Hand, der liegt daheim. Aber wenn Du ein bissl mehr von Deinem postest (einlesen der Daten) fällt mir sicher ein, woran es krankt.

0xse:
Reproduzierbar mit einer .txt Datei von z.B. 50 kB Größe durch diesen Code:


--- Code: ---Public Function GetFile () As XSD_BASE64BINARY
Dim retval As  New XSD_BASE64BINARY
Dim ses As New NotesSession, mStream As NotesStream

Set mStream = ses.CreateStream()
Call mStream.Open("C:\Test.txt")
Call retval.setValueFromNotesStream(mStream)
Call mStream.Close()

Set GetFile = retval
End Function

--- Ende Code ---

WebService Typ ist RPC/encoded und das Programmiermodell RPC.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln