Я использую SOAP api для allegro.pl (альтернативный вариант для пользы для ebay.com), и у меня есть проблема с отправкой изображений через SOAP. Я задавал тот же вопрос на официальном форуме, но, к сожалению, никто не ответил.Отправка base64binary (изображение) через SOAP с ruby / savon
Во всяком случае, работа (часть) кода (мыло сообщение) в PHP выглядит следующим образом:
array(
'fid' => 16,
'fvalueImage' => file_get_contents('http://www.stropna_www.pl/images/obrazek.jpg')
нота это не полное сообщение мыло, но это один, который меня не спал в эту ночь
И он работает (ну, в документации он работает, я не могу быть уверен, что я не использую PHP (и не знаю)). Я искал эквивалент file_get_contents в рубине, и я пытался использовать сеть/HTTP и открытой URI, чтобы открыть файл с URL и даже пытался использовать
img = File.open('img.jpg', 'rb') { |f| f.read }
, но каждый раз, когда я пытаюсь, возвращает сервер неверный XML.
Когда я пытаюсь отправить запрос без изображения, он работает правильно.
Вот полный код в Ruby:
def self.do_new_auction_ext
img = File.open('img.jpg', 'rb') { |f| f.read }
xml_message = prepare_message("DoNewAuctionExtRequest", {
:sessionHandle => self.session_id,
:fields => [
{ :fid => 1, # Tytuł
:fvalueString => "Oferta Testowa ze zdjeciem", }, # TODO: Zmienne?
{ :fid => 2, # Kategoria
:fvalueInt => 1834 }, # TODO: Zmienne?
{ :fid => 4, # Czas trwania
:fvalueInt => 3 }, # 1 - 3 dni, 2 - 7 dni, 3 - 10 dni
{ :fid => 5, # Ilość
:fvalueInt => 12}, # TODO: Zmienne?
{ :fid => 8, # Cena kup teraz
:fvalueFloat => 50.00}, # TODO: Zmienne?
{ :fid => 9, # Kraj
:fvalueInt => 228}, # 1 - Polska, 228 - Neverland
{ :fid => 10, # Wojewodztwo
:fvalueInt => 215}, # Lewopolskie
{ :fid => 11, # Miejscowość
:fvalueString => "Bielsko-Biala"},
{ :fid => 14, # Formy platnosci
:fvalueInt => 1 }, # Płatne z góry przelewem
{ :fid => 16, # Zdjecie 1
:fvalueString => img },
#{ :fid => 15, # Opcje dodatkowe
# :fvalueInt => 2},
{ :fid => 24, # Opis
:fvalueString => "konik"},
{ :fid => 28, # Sztuki/Komplety/Pary
:fvalueInt => 1},
{ :fid => 32, # Kod pocztowy
:fvalueString => "43-300"},
{ :fid => 35, # Darmowe opcje przesylki
:fvalueInt => 2} # 1 - Odbior osobisty, 2 - e-mail, 4 - Odbior osobisty po przedplacie
]
})
# puts xml_message
response = @client.call(:do_new_auction_ext) do
xml xml_message
end
не возражаете полировать комментарии
функция prepare_message только создает XML, который идет на сервер, и я вполне уверен, что он работает правильно, так как без ответа сервера отвечает (он работает!)
но, с th е изображение послало сервер ответил
{:fault=>{:faultcode=>"Sender", :faultstring=>"Invalid XML"}}
и здесь website with working PHP codeсайта на польском языке, но код в PHP
и, наконец, here is the documentationэто также на польском языке, но включает в себя английское именование и дополнительное PHP-код под вкладкой «Przykłady wywołań»
Я использую Ruby 1.9.3 и savon для отправки всего запроса SOAP (который работает, но отправка изображения не выполняется).
Извинения за стенопись текста, но я пытался объяснить это, я могу. Заранее спасибо за любую помощь, и спасибо даже за чтение этого :)