2

您好我正在使用 Savon 访问一些网络服务。

我正在使用这段代码:

client=Savon.client(
    wsdl: "WebService.wsdl",
    env_namespace: "S",
    convert_request_keys_to: :camelcase
)

response=client.call(:send_doc)  do
    message(
      Attr1: "123",
      Attr2: "ABC")
    )

如何将请求文本发送到服务器?

问候法克

4

2 回答 2

3

Savon 2 提供了一个观察者接口。您可以注册一个Observer在发送请求之前通知的内容。该接口包含一个Builder对象,您可以在其中找到请求的 XML 内容。Builder#pretty()格式化 XML 内容。

class Observer
  def notify(_, builder, _, _)
    puts builder.pretty
    nil
  end
end

Savon.observers << Observer.new

或者,您可以添加log: true到您的客户端配置。它启用请求的日志记录。

client = Savon.client(log: true, ...)
于 2016-07-08T06:21:27.110 回答
1

这对于 Savon 的稳定版本是不可能的。但是,您可以使用 Savon 版本 3 获取请求(有关安装说明和更多详细信息,请参见Savon 网站)。来自网站的示例:

client = Savon.new('http://example.com?wsdl')
operation = client.operation(service_name, port_name, operation_name)
operation.build # returns SOAP request

您还可以对 Savon 方法进行monkeypatch 或设置自定义调试器以使用您当前的 Savon 版本获取此信息。有关更多信息,请参阅这些 StackOverflow 答案:

于 2013-07-01T13:55:06.903 回答