我正在使用SOAP api for allegro.pl(波蘭語替代ebay.com),並且我通過SOAP發送圖像時存在小問題。我在官方論壇上提出了同樣的問題,但不幸的是沒有人回答。通過使用ruby/savon SOAP發送base64binary(image)
不管怎樣,在PHP工作(片)代碼(SOAP消息)看起來像這樣:
array(
'fid' => 16,
'fvalueImage' => file_get_contents('http://www.stropna_www.pl/images/obrazek.jpg')
請注意,這不是一個完整的SOAP消息,但是這一次這讓我不睡覺這個夜晚
它的工作原理(很好,在文檔中的作品,我不能確定,因爲我不使用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都到服務器,我很確定它工作正常,因爲沒有圖像服務器響應,因爲它應該(它的工作!)
但與第Ë圖像發送服務器
{:fault=>{:faultcode=>"Sender", :faultstring=>"Invalid XML"}}
迴應,這裏是website with working PHP code網站是波蘭語,但代碼是在PHP
;最後,here is the documentation它也是波蘭的,但是包括英文命名和附加在「Przykładywywołań」選項卡
我使用Ruby 1.9.3和薩翁發送所有SOAP請求PHP代碼(這工作,但發送圖像沒有)。
道歉的文本牆,但我試圖解釋這個最好的,我可以。 在此先感謝您的幫助,謝謝你甚至閱讀此:)