Apa perpustakaan klien SOAP ada untuk Python, dan di mana dokumentasi untuk mereka? [Tutup]

333

Saya belum pernah menggunakan SABUN sebelumnya dan saya agak baru dengan Python. Saya melakukan ini untuk membiasakan diri dengan kedua teknologi. Saya telah menginstal SOAPLib dan saya mencoba membaca dokumentasi Klien mereka , tetapi saya tidak memahaminya dengan baik. Apakah ada hal lain yang bisa saya lihat yang lebih cocok untuk menjadi pustaka SOAP Client untuk Python?

Sunting: Hanya untuk berjaga-jaga, saya menggunakan Python 2.6.

Damon
sumber
1
Apakah itu harus menjadi SOAP, seperti menggunakan layanan web yang sudah ada? Xmlrpclib Python tidak mudah digunakan dan saya telah memigrasi layanan SOAP kami ke XMLRPC.
Kirk Strauser
26
Kadang-kadang seseorang hanya ingin terhubung ke layanan yang HANYA disediakan melalui SOAP jadi ya - baik python SOAP lib adalah sesuatu yang dibutuhkan seseorang cepat atau lambat. Satu tidak akan memiliki kesempatan untuk meyakinkan penyedia layanan untuk mengganti SOAP dengan sesuatu yang "bersih" ...
rombarcz
34
Adakah yang bisa memberikan pembaruan yang relevan di 2011? Rupanya tidak ada yang bisa menanyakan pertanyaan ini lagi.
Marcin
1
FYI: Saya membuka posting serupa yang menargetkan SOAP untuk Python 3 : stackoverflow.com/questions/7817303/…
gecco
5
Siapa pun yang mengunjungi pertanyaan ini, pilih untuk membukanya kembali sehingga informasinya dapat tetap terkini / jawaban baru dapat diposting.
ocodo

Jawaban:

388

Pembaruan (2016):

Jika Anda hanya membutuhkan klien SOAP, ada perpustakaan yang dikelola dengan baik bernama zeep . Ini mendukung Python 2 dan 3 :)


Memperbarui:

Selain apa yang disebutkan di atas, saya akan merujuk ke halaman Python WebServices yang selalu up-to-date dengan semua modul yang dipelihara secara aktif dan direkomendasikan untuk SOAP dan semua jenis layanan web lainnya.


Sayangnya, saat ini, saya tidak berpikir ada perpustakaan SOAP Python "terbaik". Masing-masing arus utama yang tersedia memiliki pro dan kontra sendiri.

Perpustakaan lama:

  • SOAPy : Adalah yang "terbaik," tetapi tidak lagi dipertahankan. Tidak berfungsi di Python 2.5+

  • ZSI : Sangat menyakitkan untuk digunakan, dan pengembangannya lambat. Memiliki modul yang disebut "SOAPpy", yang berbeda dari SOAPy (di atas).

Perpustakaan "Baru":

  • SUDS : Sangat Pythonic, dan mudah untuk membuat klien SOAP yang mengonsumsi WSDL. Membuat server SOAP sedikit lebih sulit. (Paket ini tidak berfungsi dengan Python3. Untuk Python3 lihat SUDS-py3)

  • SUDS-py3 : Versi Python3 dari SUDS

  • spyne : Membuat server itu mudah, membuat klien sedikit lebih menantang. Dokumentasi agak kurang.

  • Ladon : Membuat server sangat mirip di soaplib (menggunakan dekorator). Ladon memperlihatkan lebih banyak antarmuka daripada SOAP pada saat yang sama tanpa kode pengguna tambahan yang diperlukan.

  • pysimplesoap : sangat ringan tetapi berguna untuk klien dan server - termasuk integrasi server web2py yang dikirimkan bersama web2py.

  • SOAPpy : Berbeda dari SOAPpy yang ditinggalkan yang dihosting di tautan ZSI di atas, versi ini sebenarnya dipertahankan hingga 2011, sekarang sepertinya ditinggalkan juga.
  • soaplib : Mudah digunakan perpustakaan python untuk menulis dan memanggil layanan web sabun. Layanan web yang ditulis dengan soaplib sederhana, ringan, bekerja dengan baik dengan implementasi SOAP lainnya, dan dapat digunakan sebagai aplikasi WSGI.
  • osa : Pustaka klien python SOAP cepat / ramping mudah digunakan.

Dari penjelasan di atas, saya hanya menggunakan SUDS secara pribadi, dan saya sangat menyukainya.

Samat Jain
sumber
2
SOAPy dan SOAPpy sebenarnya berbeda. Saya telah mengedit untuk mengklarifikasi, dan mengubah posting menjadi wiki komunitas.
Samat Jain
17
+1 untuk SUDS, perpustakaan hebat! Saya mengalami masalah menggunakan SUDS dengan layanan web HTTPS di belakang proxy. Ternyata itu adalah urllib2masalah Python yang dikenal . Lihat jawaban saya untuk lebih jelasnya.
sstock
4
Saya mencoba SUDs, tapi itu menjadi infinite loop ketika membuka WSDL; kemudian python melemparkan kesalahan batas rekursi. Saya menemukan tiket terbuka mengenai masalah ini: fedorahosted.org/suds/ticket/239 Tampaknya ini adalah bug pemecah perpustakaan 3 tahun yang lalu, dan masih belum diperbaiki.
Buttons840
11
Ada garpu SUDS yang dikelola di bitbucket.org/jurko/suds
Sjaak Trekhaak
1
Saya mulai menggunakan SUDS hari ini untuk mengambil data saja. Itu menangani authike apikey dasar di header sabun tanpa masalah, dan respon yang cukup mudah diurai. Dokumentasi itu juga lumayan bagus.
saccharine
47

Saya mengikuti saran dari jawaban lain untuk pertanyaan ini dan mencoba SUDS . Setelah menggunakannya "dalam kemarahan" saya harus setuju: SUDS sangat bagus! Sangat dianjurkan!

Saya memang mengalami kesulitan memanggil layanan web berbasis HTTPS dari belakang proxy. Pada saat penulisan ini, ini mempengaruhi semua klien layanan web Python yang menggunakan urllib2, jadi saya akan mendokumentasikan solusinya di sini.

The urllib2pengiriman modul dengan python 2.6.2 dan bawah tidak akan mengeluarkan CONNECTke proxy untuk sesi HTTPS-over-HTTP-proxy. Ini menghasilkan batas waktu yang lama, atau jika Anda beruntung, kesalahan yang terlihat seperti:

abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Ini adalah issue1424152 pada pelacak bug Python. Ada tambalan yang terlampir pada laporan bug yang akan memperbaikinya dalam Python 2.x dan Python 3.x. Masalahnya sudah diperbaiki .

stok
sumber
Baru saja menginstalnya dan meskipun saya benar-benar baru untuk Python rasanya sangat intuitif dan saya bisa mengirim permintaan SUDS saya menit waktu. Perpustakaannya sangat bagus!
Leonid
1
Apakah Anda keberatan memperbarui yang ini. Saya bertanya karena saya mengklik tautan, dan bug diperbaiki.
tshepang
3
Malu tampaknya tidak lagi dipertahankan
paulm
Kedepan kami juga berfungsi dengan baik .. Namun sangat lambat. Mengambil file sabun xml membutuhkan 0,5 detik, dan memprosesnya membutuhkan 5 detik pada mesin dual core!
TjerkW
1
@paulm: try bitbucket.org/jurko/suds
johndodo
19

Saya memiliki pengalaman yang baik dengan SUDS https://fedorahosted.org/suds

Menggunakan TestSuite mereka sebagai dokumentasi.

Rajesh
sumber
1
SUDS itu luar biasa! sangat mudah digunakan, dokumen bagus, barang bagus!
Sander Versluys
1
Dipertahankan, python3 mendukung fork: suds-jurko . pip install suds-jurko
laffuste
Saya mencoba untuk panggilan async sabun api dengan busa, bekerja dengan baik tetapi tidak mendapatkan respon apapun, bisa seseorang bantuan dalam hal itu, jam Q saya .: stackoverflow.com/questions/39227719/...
Vikram Singh Chandel
10

SUDS adalah cara untuk pergi, tidak ada pertanyaan tentang itu.

Peter Mortensen
sumber
5
Dan itu juga gagal pada sejumlah besar file WSDL. Untuk mendukung klaim itu - Bing memetakan API misalnya, beberapa gagal dan busa tidak dapat menguraikannya.
3
saya menemukan SUDS mendukung endpoint SSL.
leonigmig
6

SUDS mudah digunakan, tetapi tidak dijamin untuk masuk kembali. Jika Anda menyimpan objek WSDL Client () di aplikasi ulir untuk kinerja yang lebih baik, ada beberapa risiko yang terlibat. Solusi untuk risiko ini, metode clone (), melempar bug Python 5508 yang tidak dapat dipulihkan, yang tampaknya dicetak tetapi tidak benar-benar melempar pengecualian. Bisa membingungkan, tetapi berhasil. Sejauh ini masih merupakan klien SOAP Python terbaik.


sumber
4

Kami merilis perpustakaan baru: PySimpleSOAP , yang menyediakan dukungan untuk klien / server yang sederhana dan fungsional. Tujuannya adalah: kemudahan penggunaan dan fleksibilitas (tidak ada kelas, kode autogenerated atau xml diperlukan), introspeksi dan generasi WSDL, kepatuhan standar WS-I, kompatibilitas (termasuk Java AXIS, .NET dan Jboss WS). Itu dimasukkan ke dalam Web2Py untuk mengaktifkan solusi tumpukan penuh (melengkapi protokol lain yang didukung seperti XML_RPC, JSON, AMF-RPC, dll.).

Jika seseorang mempelajari SOAP atau ingin menyelidikinya, saya pikir itu adalah pilihan yang baik untuk memulai.

reingart
sumber
2

Saya percaya soaplib telah mencabut klien SABUN nya ('pengirim') demi busa. Pada titik ini soaplib difokuskan untuk menjadi kerangka kerja server SOAP agnostik web ('penerima'). Saat ini soaplib sedang dalam pengembangan aktif dan biasanya dibahas dalam milis Python SOAP:

http://mail.python.org/mailman/listinfo/soap

bradallen137
sumber
2

Dalam kesimpulan saya, kami memiliki ini:

Sisi klien sabun:

hanya gunakan suds-jurko (diperbarui 2016) yang terpelihara dengan baik dan diperbarui.

UPDATE 06/2017: perpustakaan suds-jurko tidak diperbarui dan tampaknya ditinggalkan ,

Saya menguji perpustakaan zeep tetapi mendapat batasan di sekitar token, sekarang hanya mendukung UsernameToken, saya melaporkan bug untuk membuat token timestamp dan penulis memperbarui kode untuk memperbaikinya.

Zeep memulai dengan baik dan memiliki dokumentasi yang baik , jadi saya baru-baru ini memigrasi kode saya dari suds ke zeep dan berfungsi dengan baik.

Sisi server sabun:

Kami memiliki TGWS, soaplib (pysimplesoap tidak diuji) penggunaan IMHO dan membantu soaplib harus menjadi pilihan.

Salam Hormat,

Cristian Salamea
sumber
Apakah ada dokumentasi / sampel yang bagus untuk Suds-jurko? dalam repo ada beberapa file .rst tetapi tidak banyak cara dokumentasi tentang cara menggunakan perpustakaan.
ierdna
1

Seperti yang saya sarankan di sini, saya sarankan Anda menggulung sendiri. Ini sebenarnya tidak terlalu sulit dan saya menduga itulah alasan tidak ada perpustakaan Python SOAP yang lebih baik di luar sana.

Greg
sumber
1

busa cukup bagus. Saya mencoba SOAPpy tetapi tidak membuatnya bekerja dengan cara yang saya butuhkan sedangkan busa langsung bekerja.

Pratik Patel
sumber
0

Kami menggunakan SOAPpy dari Python Web Services , tetapi tampaknya ZSI (sumber yang sama) menggantikannya

Kirk Strauser
sumber
0

Saya menggunakan SOAPpy dengan Python 2.5.3 dalam pengaturan produksi.

Saya harus secara manual mengedit beberapa file dalam SOAPpy (sesuatu tentang kode header berada di tempat yang salah) tetapi selain itu berfungsi dan terus melakukannya dengan sangat andal.

carl
sumber
1
Kami melakukan hal yang sama dan menggunakan SOAPpy dengan Python 2.6.3.
Joe L.