Autor Thema: WebService und XSD_BASE64BINARY  (Gelesen 3285 mal)

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
WebService und XSD_BASE64BINARY
« 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

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: WebService und XSD_BASE64BINARY
« Antwort #1 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.

HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
Re: WebService und XSD_BASE64BINARY
« Antwort #2 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.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz