13Apr/110
String mit .NET komprimieren und und mit Ruby wieder entpacken
Das hab ich gebastelt um einen XML String aus .NET über POST Request an eine Ruby on Rails Applikation zu übertragen und dort weiterzuverarbeiten. Um beim senden keine Probleme zu verursachen wird der GZIP komprimierte String BASE64 kodiert.
.NET Code (VB.NET 2010)
Imports System.Security.Cryptography
Imports System.IO.Compression
Public Function Compress(ByVal text As String) As String
Try
Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
Dim memoryStream = New MemoryStream()
Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
gZipStream.Write(buffer, 0, buffer.Length)
End Using
Return Convert.ToBase64String(memoryStream.GetBuffer)
Catch ex As Exception
WriteToDebugLog("Compress", ex.Message)
Return Nothing
End Try
End Function
RoR Code (Ruby 1.9.2 / Rails 3)
require "base64" require 'nokogiri' xml = ActiveSupport::Gzip.decompress(Base64.decode64( )) xml_doc = Nokogiri::XML(xml) do |config| config.noblanks end # Zugriff auf Elemente über xml_doc.xpath()
Evtl. hilfts ja jemandem bei was auch immer.