« httpwwwtinyurlcom A Simple Even RESTful ... | Main | Google Weblog Announcing Froogle A Hrefh... »

I ran all over the Net (via Google and Google Groups) this evening trying to figure out the answer to what I thought was a simple question.  Everywhere I turned I found pieces of what I wanted to do...clues...but not even close to the whole solution (isn't that always the way?). So, when I DID figure it out (for better or worse) I wanted to put the solution out in the world, lest I forget it, so if some poor schmoe needs to go looking for it him/herself.

I've got a very constrained environment in this instance, with ASP (not ASP.NET) on the client side, calling a Java WebService that includes a Base64 encoded image.  I wanted to get the image out of the soap envelope WITHOUT touching the disk. The data in the image is very sensitive and it can't be saved.

I know this is easy, and done basically automatically with serialization in ASP.NET...heck, most SOAP stacks handle this kind of stuff for you...I guess I just made it harder than it needed to be in Classic ASP.  I found all sorts of interesting stuff, including an online Base64 decoder, and one guy who actually wrote a BASE64 Decoder entirely in VBScript (which was, not surprisingly more effort than I was willing to handle today)!

The Proof of Concept result is this snippet of ASP/VBScript code...sigh...these things are so obvious AFTER they've been written!

<%
Dim mDoc
Set mDoc = Server.CreateObject("MSXML2.DOMDocument")
mDoc.async = false
mDoc.ValidateOnParse = false
'NOTE: The REAL xml file will come from inside our SOAP Envelope when it comes over from the SOAP/REST call to the Java WS
mDoc.Load Server.MapPath(".") + "\\sample.xml"
   
Dim oNode
Set oNode = m_Doc.selectSingleNode("/Envelope/Body/ImgQryRs/imgBin64")
'NOTE: I had to force the dataType to bin.base64 since there wasn't yet an XSD available to declare it was so.
oNode.dataType = "bin.base64"
Response.ContentType="image/JPEG"
Response.BinaryWrite oNode.nodeTypedValue
%>

Interesting things about this:

  • MSXML is smarter than I thought when using nodeTypedValue (accessing the property when the dataType is a bin.base64 causes an implicit conversion to a byte array)
  • Response.BinaryWrite in ASP is pretty darn useful, even in this typeless varient-y world of Classic ASP
  • When there's no XSD available (duh!) then nodeTypedValue doesn't work well! :)



Comments are closed.

Contact

Sponsors

Hosting By

Hot Topics

Tags

Calendar

<March 2010>
SunMonTueWedThuFriSat
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Archives

March, 2010 (10)
February, 2010 (17)
January, 2010 (13)
December, 2009 (13)
November, 2009 (7)
October, 2009 (19)
September, 2009 (11)
August, 2009 (12)
July, 2009 (21)
June, 2009 (26)
May, 2009 (16)
April, 2009 (13)
March, 2009 (17)
February, 2009 (17)
January, 2009 (18)
December, 2008 (32)
November, 2008 (17)
October, 2008 (22)
September, 2008 (16)
August, 2008 (14)
July, 2008 (25)
June, 2008 (19)
May, 2008 (17)
April, 2008 (17)
March, 2008 (26)
February, 2008 (21)
January, 2008 (28)
December, 2007 (19)
November, 2007 (17)
October, 2007 (31)
September, 2007 (39)
August, 2007 (37)
July, 2007 (43)
June, 2007 (37)
May, 2007 (32)
April, 2007 (38)
March, 2007 (29)
February, 2007 (46)
January, 2007 (31)
December, 2006 (27)
November, 2006 (31)
October, 2006 (32)
September, 2006 (39)
August, 2006 (34)
July, 2006 (40)
June, 2006 (18)
May, 2006 (31)
April, 2006 (34)
March, 2006 (30)
February, 2006 (38)
January, 2006 (44)
December, 2005 (19)
November, 2005 (34)
October, 2005 (24)
September, 2005 (37)
August, 2005 (20)
July, 2005 (24)
June, 2005 (33)
May, 2005 (16)
April, 2005 (22)
March, 2005 (34)
February, 2005 (15)
January, 2005 (37)
December, 2004 (28)
November, 2004 (30)
October, 2004 (34)
September, 2004 (22)
August, 2004 (34)
July, 2004 (18)
June, 2004 (64)
May, 2004 (49)
April, 2004 (21)
March, 2004 (29)
February, 2004 (29)
January, 2004 (36)
December, 2003 (25)
November, 2003 (24)
October, 2003 (59)
September, 2003 (42)
August, 2003 (24)
July, 2003 (44)
June, 2003 (29)
May, 2003 (21)
April, 2003 (30)
March, 2003 (27)
February, 2003 (47)
January, 2003 (50)
December, 2002 (31)
November, 2002 (38)
October, 2002 (44)
September, 2002 (15)
May, 2002 (2)
April, 2002 (4)

Google Ads