【发布时间】:2009-12-18 02:21:12
【问题描述】:
我有一个用RubyOnRails 编写的soap web 服务和一个用Delphi 编写的客户端。客户端和服务器使用 Delphi 2006 可以正常通信,但使用较新的 Delphi 2009 进行编译会导致 Rails 服务器“崩溃”。
这是请求(由内置 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>
这是 Rails 网络服务的“响应”
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 中似乎很明显有所不同,但我不知道如何更改。
【问题讨论】:
-
由于您没有指定如何调用 web 服务,这是一些猜测:看起来您的请求没有指定编码,然后 Rails 需要 UTF8 编码。我怀疑使用 Delphi 2009 它现在以 UTF-16 编码发送数据。当您告诉我们您实际上是如何将请求发送到 Web 服务时,我们可以尝试解决它。
-
我使用默认方式通过THTTPRio(Delphi为WSDL生成的接口)调用webservice
-
谢谢。现在,您能否为我们提供运行该服务的 WSDL 或公共 URL?
标签: ruby-on-rails delphi soap web-services delphi-2009