allegro.pl (ebay.com の洗練された代替手段) に SOAP API を使用していますが、SOAP を介して画像を送信する際に少し問題があります。公式フォーラムで同じ質問をしましたが、残念ながら誰も答えていません。
とにかく、PHP で動作する (一部の) コード (soap メッセージ) は次のようになります。
array(
'fid' => 16,
'fvalueImage' => file_get_contents('http://www.stropna_www.pl/images/obrazek.jpg')
これは完全な石鹸メッセージではないことに注意してください。
そして、それは機能します(まあ、ドキュメントでは機能しますが、私はPHPを使用していないので確信が持てません(私もそれを知りません))。ルビーで file_get_contents に相当するものを探していましたが、 net/http と open-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"}}
ここにPHPコードが機能するWebサイトがあります Webサイトはポーランド語ですが、コードはPHPです
最後に、これも洗練されたドキュメントですが、 「Przykłady wywołań」タブの下に英語の名前と追加の PHP コードが含まれています。
Ruby 1.9.3 と savon を使用してすべての SOAP リクエストを送信しています (これは機能しますが、画像の送信は機能しません)。
テキストの壁については申し訳ありませんが、私はできる限りこれを説明しようとしていました. 助けてくれてありがとう、そしてこれを読んでくれてありがとう:)