2011-10-20 13 views
1

リクエストをUTF-16でエンコードするにはどうすればよいですか?ここで私が持っているものだ:RubyとSavonでUTF-16でエンコードされたSOAPリクエストを送信する

# 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 

ここで送信されているものの物乞いだ、エンコード= "UTF-8" に気づく:

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

ここに私が取得エラーです:

< s o a p : E n v e l o p e x m l n s : s o a p = " h t t p :// s c h e m a s . x m l s o a p . o r g/s o a p/e n v e l o p e/" x m l n s : w s>d 
< s o a p : B o d y > 
    < s o a p : F a u l t > 
    < f a u l t c o d e > s o a p : C l i e n t </f a u l t c o d e > 
    < f a u l t s t r i n g > F a i l e d t o p r o c e s s S O A P r e q u e s t . S O A P b o d y n o t i n U T F - 1 6 . 
</f a u l t s t r i n g > 
    < d e t a i l > 
     < w s d l _ o p s : e r r o r > F a i l e d t o p r o c e s s S O A P r e q u e s t . S O A P b o d y n o t i n U T F - 1 6 . 
</w s d l _ o p s : e r r o r > 
    </d e t a i l > 
    </s o a p : F a u l t > 
</s o a p : B o d y > 
</s o a p : E n v e l o p e > 

答えて

1

Savonは現在、統合ビルダー方式でchanging the XML directive tagのみをサポートしています。

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

このアプローチを使用すると、多くのXMLサポートが欠落します。ノーSOAPエンベロープ、無ヘッダーまたは本文:

<?xml version="1.0" encoding="UTF-16"?><id>18615618</id> 

私はできるだけ早く、より良い解決策を考え出すyour ticketを使用します!

+1

ありがとう、アップデートを楽しみにしています!素晴らしいSOAPクライアントBTW。 – spectro

+0

名前空間を使用していたので、毎回savonで自分のXMLを作成しなければなりませんでした。 Savonは私にこれらの2つ(または3つ)のxmlタグを提供していましたので、既に手作りの人にこれらを追加することは難しくありません。上記の問題のパッチがリリースされているので、この回答は受け入れられるべきです。 Riight? :) –

関連する問題