[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [xmlblaster] vb.net and activex dll
Hi again,
i have checked it now myself and you are right, byte[] is not
properly transferred.
I've have found an ActiveX bridge bug at
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4887461
The ActiveX bridge has problems to convert Java byte[] as described in bug_id=4887461.
I have now added a workaround for the ActiveX bridge bug
so that we can transfer binary data.
We offer now in the callback a method msg.getContentBase64() if you need to transfer binary data.
If your content contains only strings (for example a xml string)
you can use the convenience method msg.getContentStr().
Here is an example for the callback method update(), 'str' and 'decoded' contain the same result:
Private Sub XmlScriptAccess_update(ByVal msg As Object) _
Handles xmlBlaster.XmlScriptAccessSource_Event_update
Try
Dim str As String
Dim len As Int32
Dim encoded As String
Dim decoded As Byte()
str = msg.getContentStr()
len = msg.getContentLength()
encoded = msg.getContentBase64()
decoded = Convert.FromBase64String(encoded)
...
This is tested on WinXP.
Please get the newest code from subversion.
regards
Marcel
Silver Blea wrote:
sorry, i had a typo in the email message. I still get an the following errors.
"Specified cast is not valid" on line #4
and a
"Invalid Cast Exception: Cast from type '_ComObject' to type 'String' is not valid. " Line #5
private sub xmlScriptAccess_update(byval msg as object) handles
xmlBlaster.XmlScriptAccessSource_Event_update
dim qos as object
dim contentStr as string
dim byteContents() as Byte = new Byte(1024) {} ' byte array of
1 try
2 qos = msg.getQos() ' OK
3 len = msg.getContents().length ' OK returns 344
Strange that this has worked: getContents() is not existing (note the 's')
4 byteContents= msg.getContent() ' EXCEPTION
5 contentStr = msg.getContentStr() ' EXCEPTION
6 xmlBlaster.setUpdateReturn("<qos><state> id='OK' /></qos>")
7catch e as SystemException
8 msgBox(e.toString())
9 end try
...
----- Original Message -----
From: Marcel Ruff <mr at marcelruff.info>
To: xmlblaster at server.xmlBlaster.org
Subject: Re: [xmlblaster] vb.net and activex dll
Date: Fri, 29 Oct 2004 11:40:37 +0200
Silver Blea wrote:
hello,
I am tyring to get the vb.net activex demo working. However, I am
having a
problem with the asynchronously subroutine XmlScriptAccess_update. I
am
able to successfully connect to the server, howerver, a get invalid
cast
exceptions when I try to get the messge contents.
Environment: W2K, JDK1.5.0, VB.NET
(sending a text file of size = 344)
private sub xmlScriptAccess_update(byval msg as object) handles
xmlBlaster.XmlScriptAccessSource_Event_update
dim qos as object
dim contents, contentStr as string
dim byteContents() as Byte = new Byte(1024) {} ' byte array of
size 1K
try
qos = msg.getQos() ' no errors
len = msg.getContents().length ' returns 344
contents = msg.getContents() ' ERROR
contentStr = msg.getContentsStr() ' ERROR ALSO
xmlBlaster.setUpdateReturn("<qos><state>
id='OK' /></qos>")
catch e as SystemException
msgBox(e.toString())
end try
end sub
whats the proper method to get the data out (string or byte array?).
Hi Silviano,
please correct the method call from
msg.getContentsStr()
to
msg.getContentStr()
(Note there is no 's' after Content)
The 'msg' is of type
http://www.xmlblaster.org/xmlBlaster/doc/client-api/org/xmlBlaster/client/activex/UpdateEvent.html
The other setup is similar to mine, only i've used WinXP instead
of W2K, but i think this shouldn't matter,
regards
Marcel
thanks
in advance.
Silviano Blea Jr.
sblea at cs.unm.edu
(505) 853-0462 (Office)
--
http://www.xmlBlaster.org
--
http://www.xmlBlaster.org