RubyOnRails로 작성된 비누 webservice와 Delphi로 작성된 클라이언트가 있습니다. 클라이언트와 서버는 Delphi 2006을 사용하여 정상적으로 통신하지만 최신 Delphi 2009로 컴파일하면 Rails 서버가 "충돌"합니다. SOAP Rails Webservice를 사용하는 것은 Delphi 2009에서는 작동하지 않지만 Delphi 2006에서는 Ok입니다.
이
은 (THTTPRIO 내장에 의해 생성) 요청입니다 :<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><NS1:IsValidCouponCode xmlns:NS1="urn:ActionWebService"><coupon_code xsi:type="xsd:string">1VK3K-7N45K-4V76W-JCS2F-NC125</coupon_code></NS1:IsValidCouponCode></SOAP-ENV:Body></SOAP-ENV:Envelope>
이는 레일 웹 서비스의 "응답"입니다
Internal protocol error: Bad encoding name "UTF-8"
Backtrace:
/usr/lib/ruby/1.8/rexml/encoding.rb:31:in `encoding='
/usr/lib/ruby/1.8/rexml/source.rb:54:in `encoding='
/usr/lib/ruby/1.8/xsd/xmlparser/rexmlparser.rb:24:in `do_parse'
/usr/lib/ruby/1.8/soap/parser.rb:92:in `parse'
/usr/lib/ruby/1.8/soap/processor.rb:39:in `unmarshal'
[...]
그래서 분명히 보인다 "UTF-뭔가 8 "인코딩은 Delphi 2009에서 다릅니다. 그러나 이것을 어떻게 바꿀 것인지 잘 모릅니다.
웹 서비스를 호출하는 방법을 지정하지 않았으므로 다음과 같은 메시지가 표시됩니다. 요청한 내용이 인코딩을 지정하지 않아서 Rails가 UTF8 인코딩을 필요로하는 것으로 보입니다. Delphi 2009에서는 UTF-16 인코딩으로 데이터를 전송합니다. 실제로 웹 서비스에 요청을 보내는 방법을 알려 주시면 문제를 해결할 수 있습니다. –
나는 THTTPRio (델파이가 WSDL을 위해 생성 한 인터페이스)를 통해 webservice를 호출하는 기본 방법을 사용한다. –
고마워. 이제 WSDL이나 서비스가 실행되는 공용 URL을 얻을 수 있습니까? –