ウォッシュアウトで作成されたSOAPWebサービスがあり、base64Binary型のパラメーターを持つアクションがあります(これはC#のbyte []と同等であると思います)。
次の変数をWebサービスパラメーターに送信しています。
file_data = Base64.encode64(File.binread("/path/to/my/file"))
エラーが返されます:
RuntimeError (Invalid WashOut simple type: base64Binary)
ファイルパスからデータ型を正しく作成していませんか?
Webサービスのコントローラーは次のとおりです。
class ServiceController < ApplicationController
include WashOut::SOAP
soap_action "import_file",
:args => { :data => :base64Binary, :name => :string},
:return => :string
def import_file
render :soap => ("response")
end
# You can use all Rails features like filtering, too. A SOAP controller
# is just like a normal controller with a special routing.
before_filter :dump_parameters
def dump_parameters
Rails.logger.debug params.inspect
end
end
これが私のクライアントのコードです:
require 'savon'
class ServiceTester
def self.initiate
# create a client for your SOAP service
client = Savon.client do
wsdl "http://localhost:3000/service/wsdl"
end
file_data = Base64.encode64(File.binread("/path/to/my/file"))
response = client.call(:import_file, message: { data: file_data, name: "myfilename" })
end
end