Envía una solicitud SOAP codificada en UTF-16 con Ruby y Savon

¿Cómo codifico la solicitud en UTF-16? Esto es lo que tengo:

# Create Savon client @client = Savon::Client.new do wsdl.document = File.expand_path("account_list.wsdl", __FILE__) end # Set header encoding @client.http.headers["Content-Type"] = "text/xml;charset=UTF-16" # Setup ssl configuration @client.http.auth.ssl.cert_key_file = "cert_key_file.pem" @client.http.auth.ssl.cert_file = "cert_file.pem" @client.http.auth.ssl.ca_cert_file = "ca_cert_file.pem" @client.http.auth.ssl.verify_mode=:none # Execute request response = @client.request :account_list do soap.body = { :id => "18615618" } end 

Aquí está el principio de lo que se envía, observe la encoding = “UTF-8”:

 Content-Type: text/xml;charset=UTF-16, SOAPAction: "accountList", Content-Length: 888 <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema 

Aquí está el error que recibo:

 d    soap : C lient   F ailedtoprocess SOAP request . SOAP bodynotin UTF - 1 6 .    F ailedtoprocess SOAP request . SOAP bodynotin UTF - 1 6 .      

Actualmente, Savon solo admite el cambio de la etiqueta de directiva XML a través del método integrado Builder:

 response = @client.request(:account_list) do soap.xml(:xml, :encoding => "UTF-16") { |xml| xml.id("18615618") } end 

Sin embargo, se perderá una gran cantidad de soporte XML utilizando este enfoque. Sin sobre SOAP, sin encabezado o cuerpo:

 18615618 

¡Usaré tu boleto para encontrar una mejor solución lo antes posible!