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.
python
soap
soap-client
Damon
sumber
sumber
Jawaban:
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.
Dari penjelasan di atas, saya hanya menggunakan SUDS secara pribadi, dan saya sangat menyukainya.
sumber
urllib2
masalah Python yang dikenal . Lihat jawaban saya untuk lebih jelasnya.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
urllib2
pengiriman modul dengan python 2.6.2 dan bawah tidak akan mengeluarkanCONNECT
ke proxy untuk sesi HTTPS-over-HTTP-proxy. Ini menghasilkan batas waktu yang lama, atau jika Anda beruntung, kesalahan yang terlihat seperti: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 .
sumber
Saya memiliki pengalaman yang baik dengan SUDS https://fedorahosted.org/suds
Menggunakan TestSuite mereka sebagai dokumentasi.
sumber
pip install suds-jurko
SUDS adalah cara untuk pergi, tidak ada pertanyaan tentang itu.
sumber
Hanya peringatan FYI untuk orang-orang yang melihat SUDS, sampai tiket ini diselesaikan, SUDS tidak mendukung tag "pilihan" di WSDL:
https://fedorahosted.org/suds/ticket/342
lihat: busa dan tag pilihan
sumber
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
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.
sumber
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
sumber
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,
sumber
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.
sumber
busa cukup bagus. Saya mencoba SOAPpy tetapi tidak membuatnya bekerja dengan cara yang saya butuhkan sedangkan busa langsung bekerja.
sumber
Bisakah ini membantu: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
Saya menemukannya dengan mencari
wsdl
danpython
, dengan rasional, bahwa Anda akan memerlukan deskripsi wsdl dari server SOAP untuk melakukan pembungkus klien yang berguna ....sumber
Kami menggunakan SOAPpy dari Python Web Services , tetapi tampaknya ZSI (sumber yang sama) menggantikannya
sumber
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.
sumber