将 POST 数据发送到 Rails 应用程序时出现此错误,数据是 XML。
!! Unexpected error while processing request: invalid %-encoding (bplist00� !"#$%)
问题是我无法更改传入的数据(它在 PHP 应用程序上运行良好,现在我需要在我们的 Rails 应用程序中解析它)但我根本看不到数据,这个错误是在运行 Rails 的开发控制台中抛出(没有任何记录),我什至没有进入控制器,所以我至少可以输出它以查看它可能有什么问题或捕获数据并转换它。
似乎我什至没有到达路由级别,因为删除应该捕获请求的路由没有任何区别,我得到了同样的错误。我在某处读到它可能是一个格式错误的 URL,但无法知道我是否看不到传入的数据。
所以我的问题是:
- 我怎样才能解决这个问题?
- 有没有办法以某种方式查看此帖子数据?
- 我可以使用哪些工具或策略来解决此问题?
我还读到 Rack 中间件正在捕获错误,但我对 Rack 或如何防止它捕获并简单地传递它一无所知。
谢谢。
PS我知道这里有类似的问题,但没有一个能说明如何修复或排除错误。
更进一步:
通过将其放入我的application.rb
文件中:
module Rack::Utils
def unescape(s, encoding = Encoding::UTF_8)
begin
URI.decode_www_form_component(s, encoding)
rescue
Rails.logger.warn "DECODING on #{s.inspect} with #{encoding.inspect} FAILING."
end
end
module_function :unescape
end
我可以在开发日志中看到以下内容:
DECODING on "bplist00\xDF\x10\x1C\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\e\x1C\x1D\x1E\x1F !\"\#$%" with #<Encoding:UTF-8> FAILING.
关于如何解析这个的任何想法?