2011-10-20 2 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

네임 스페이스를 사용하고 있기 때문에 매번 사바와 함께 내 자신의 XML을 작성해야했습니다. Savon은 그 두 개 (또는 세 개) xml 태그를 제공 했으므로 이미 수작업으로 작성한 태그에 추가하기가 어렵지 않습니다. 위의 문제에 대한 패치가 릴리스되므로이 대답을 받아 들여야합니다. 리이트? :) –