Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: 0xse am 03.02.11 - 15:13:16

Titel: WebService und XSD_BASE64BINARY
Beitrag von: 0xse am 03.02.11 - 15:13:16
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
Titel: Re: WebService und XSD_BASE64BINARY
Beitrag von: m3 am 03.02.11 - 15:19:05
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.

Titel: Re: WebService und XSD_BASE64BINARY
Beitrag von: 0xse am 03.02.11 - 15:33:38
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

WebService Typ ist RPC/encoded und das Programmiermodell RPC.