ไลบรารีไคลเอ็นต์ SOAP ใดที่มีอยู่สำหรับ Python และเอกสารสำหรับพวกเขาอยู่ที่ไหน [ปิด]


333

ฉันไม่เคยใช้SOAPมาก่อนและฉันก็คุ้นเคยกับ Python ฉันกำลังทำสิ่งนี้เพื่อทำความคุ้นเคยกับเทคโนโลยีทั้งสอง ฉันติดตั้งSOAPlibแล้วและฉันพยายามอ่านเอกสารไคลเอ็นต์ของพวกเขาแต่ฉันไม่เข้าใจ มีอะไรอีกบ้างที่ฉันสามารถดูว่าเหมาะกับการเป็นห้องสมุดลูกค้า SOAP สำหรับ Python หรือไม่

แก้ไข: ในกรณีที่ช่วยได้ฉันใช้ Python 2.6


1
มันไม่ได้จะเป็นสบู่เช่นการใช้บริการเว็บที่มีอยู่ก่อน? xmlrpclib ของ Python นั้นง่ายต่อการใช้งานและฉันได้ย้ายบริการ SOAP ของเราไปยัง XMLRPC ด้วยแล้ว
Kirk Strauser

26
บางครั้งคนเราเพียงต้องการเชื่อมต่อกับบริการที่มีให้ผ่าน SOAP เท่านั้นใช่ - งูหลามที่ดี SOAP lib เป็นสิ่งที่คนเราจะต้องเจอไม่ช้าก็เร็ว หนึ่งจะไม่มีโอกาสโน้มน้าวให้ผู้ให้บริการเพื่อแทนที่สบู่ด้วยบางสิ่งบางอย่าง "สะอาด" ...
rombarcz

34
ทุกคนสามารถให้การอัปเดตที่เกี่ยวข้องในปี 2011 ได้หรือไม่ เห็นได้ชัดว่าไม่มีใครสามารถถามคำถามนี้ได้อีก
Marcin

1
FYI: ฉันเปิดโพสต์ที่คล้ายกันซึ่งมีเป้าหมาย SOAP สำหรับPython 3 : stackoverflow.com/questions/7817303/ …
gecco

5
ใครก็ตามที่เยี่ยมชมคำถามนี้ให้ลงคะแนนเพื่อเปิดใหม่เพื่อให้สามารถโพสต์คำตอบปัจจุบัน / ใหม่ได้
ocodo

คำตอบ:


388

อัปเดต (2016):

หากคุณจะต้องลูกค้า SOAP มีการบำรุงรักษาอย่างดีเรียกว่าห้องสมุดzeep รองรับทั้ง Python 2 และ 3 :)


ปรับปรุง:

นอกจากสิ่งที่กล่าวถึงข้างต้นฉันจะอ้างถึงหน้าPython WebServicesซึ่งเป็นข้อมูลล่าสุดเสมอกับโมดูลที่ได้รับการดูแลและแนะนำให้ใช้กับSOAPและประเภทเว็บเซอร์อื่น ๆ ทั้งหมด


น่าเสียดายที่ในตอนนี้ฉันไม่คิดว่าจะมีห้องสมุด Python SOAP ที่ "ดีที่สุด" แต่ละกระแสหลักที่มีอยู่มีข้อดีและข้อเสียของตัวเอง

ห้องสมุดเก่า:

  • SOAPy : "ดีที่สุด" แต่ไม่ได้รับการบำรุงรักษาอีกต่อไป ไม่ทำงานบน Python 2.5+

  • ZSI : เจ็บปวดมากที่จะใช้และการพัฒนาช้า มีโมดูลที่เรียกว่า "SOAPpy" ซึ่งแตกต่างจาก SOAPy (ด้านบน)

ไลบรารี "ใหม่กว่า":

  • SUDS : Pythonic มากและง่ายต่อการสร้างไคลเอ็นต์ SOAP ที่ใช้ WSDL การสร้างเซิร์ฟเวอร์ SOAP นั้นทำได้ยากขึ้นเล็กน้อย (แพ็คเกจนี้ใช้ไม่ได้กับ Python3 สำหรับ Python3 ดู SUDS-py3)

  • SUDS-py3 : เวอร์ชั่น Python3 ของ SUDS

  • spyne : การสร้างเซิร์ฟเวอร์เป็นเรื่องง่ายสร้างลูกค้าให้มีความท้าทายเพิ่มขึ้นเล็กน้อย เอกสารไม่เพียงพอ

  • ladon : การสร้างเซิร์ฟเวอร์นั้นเหมือนกับใน soaplib (โดยใช้มัณฑนากร) Ladon เปิดเผยอินเตอร์เฟสมากกว่า SOAP ในเวลาเดียวกันโดยไม่ต้องมีรหัสผู้ใช้เพิ่มเติม

  • pysimplesoap : มีน้ำหนักเบามาก แต่มีประโยชน์สำหรับทั้งไคลเอ็นต์และเซิร์ฟเวอร์ - รวมการรวมเซิร์ฟเวอร์ web2py ที่มาพร้อมกับ web2py

  • SOAPpy : แตกต่างจาก SOAPpy ที่ถูกทิ้งร้างซึ่งโฮสต์ที่ลิงก์ ZSI ด้านบนเวอร์ชันนี้ได้รับการปรับปรุงจริงจนถึงปี 2011 ตอนนี้ดูเหมือนว่าจะถูกยกเลิกเช่นกัน
  • soaplib : ง่ายต่อการใช้ห้องสมุดหลามสำหรับการเขียนและการโทรบริการเว็บสบู่ บริการเว็บที่เขียนด้วย soaplib นั้นง่ายน้ำหนักเบาทำงานได้ดีกับการใช้งาน SOAP อื่น ๆ และสามารถปรับใช้เป็นแอปพลิเคชัน WSGI
  • osa : ไลบรารีไคลเอนต์ SOAP python ที่รวดเร็วและบางใช้งานง่าย

จากข้างต้นฉันใช้ SUDS เป็นการส่วนตัวเท่านั้นและฉันชอบมันมาก


2
SOAPy และ SOAPpy นั้นแตกต่างกันจริงๆ ฉันแก้ไขเพื่อให้ความกระจ่างและเปลี่ยนโพสต์เป็นวิกิชุมชน
Samat Jain

17
+1 สำหรับ SUDS ห้องสมุดที่ยอดเยี่ยม! ฉันพบปัญหาในการใช้ SUDS ด้วยบริการเว็บ HTTPS หลังพร็อกซี ปรากฎว่าเป็นurllib2ปัญหาของPython ดูคำตอบของฉันสำหรับรายละเอียดเพิ่มเติม
sstock

4
ฉันลอง SUD แต่มันกลับวนซ้ำไม่สิ้นสุดเมื่อเปิด WSDL จากนั้นหลามก็โยนข้อผิดพลาดการ จำกัด การสอบถามซ้ำ ฉันพบตั๋วที่เปิดนี้เกี่ยวกับปัญหา: fedorahosted.org/suds/ticket/239 เห็นได้ชัดว่านี่เป็นข้อผิดพลาดที่ผิดพลาดของห้องสมุดเมื่อ 3 ปีที่แล้วและยังไม่ได้รับการแก้ไข
Buttons840

11
มีการบำรุงรักษา SUDS ที่bitbucket.org/jurko/suds
Sjaak Trekhaak

1
ฉันเริ่มใช้ SUDS วันนี้เพื่อดึงข้อมูลเท่านั้น มันจัดการ apikey การตรวจสอบขั้นพื้นฐานในส่วนหัวสบู่โดยไม่มีปัญหาใด ๆ และการตอบสนองก็ค่อนข้างง่ายที่จะแยกวิเคราะห์ เอกสารก็ยังดีงาม
saccharine

47

ฉันทำตามคำแนะนำของคำตอบอื่น ๆ สำหรับคำถามนี้และลองใช้SUDS หลังจากใช้มัน "ด้วยความโกรธ" ฉันต้องเห็นด้วย: SUDS ดีมาก! แนะนำเป็นอย่างยิ่ง!

ฉันพบปัญหาในการโทรบริการเว็บที่ใช้ HTTPS จากด้านหลังพร็อกซี ในช่วงเวลาของการเขียนนี้จะมีผลกับลูกค้าบริการเว็บ Python ทั้งหมดที่ใช้urllib2ดังนั้นฉันจะเอกสารวิธีการแก้ปัญหาที่นี่

urllib2โมดูลจัดส่งด้วยหลาม 2.6.2 และด้านล่างจะไม่ออกCONNECTไปพร็อกซี่สำหรับการประชุม HTTPS-over-ใช้ HTTP พร็อกซี่ ผลลัพธ์นี้ใช้เวลานานหรือหากคุณโชคดีข้อผิดพลาดที่มีลักษณะ:

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

นี่คือปัญหา 1424152บนตัวติดตามข้อผิดพลาดของ Python มีแพตช์ที่แนบมากับรายงานบั๊กที่จะแก้ไขปัญหานี้ใน Python 2.x และ Python 3.x ปัญหาได้รับการแก้ไขแล้ว


เพิ่งติดตั้งมันและแม้ว่าฉันใหม่ทั้งหมดกับ Python มันให้ความรู้สึกเป็นธรรมชาติมากและฉันสามารถส่งคำขอ SUDS ได้ในเวลาไม่กี่นาที ห้องสมุดดีมาก!
Leonid

1
คุณคิดที่จะอัพเดตอันนี้ไหม ฉันถามเพราะฉันคลิกที่ลิงค์และแก้ไขข้อผิดพลาด
tshepang

3
ความอัปยศดูเหมือนว่าจะไม่ได้รับการดูแลอีกต่อไป
paulm

หน้าพวกเรายังทำงานได้ดี .. อย่างไรก็ตามมันช้ามาก การดึงไฟล์ xml soap ใช้เวลา 0.5 วินาทีและการประมวลผลใช้เวลา 5 วินาทีในเครื่องดูอัลคอร์!
TjerkW

1
@paulm: ลองbitbucket.org/jurko/suds
johndodo

19

ฉันมีประสบการณ์ที่ดีกับ SUDS https://fedorahosted.org/suds

ใช้ TestSuite เป็นเอกสาร


1
ยอดเยี่ยมมาก! ใช้งานง่ายมากเอกสารที่ดีสิ่งที่ยอดเยี่ยม!
Sander Versluys

1
ยังคงได้รับการสนับสนุน python3 ส้อม: สบู่-jurko pip install suds-jurko
laffuste

ฉันพยายามโทร async soap api ด้วย suds ทำงานได้ดี แต่ไม่ได้รับการตอบสนองใด ๆ ใครสามารถช่วยได้บ้างชั่วโมงนี้คำถามของฉัน: stackoverflow.com/questions/39227719/ …
Vikram Singh Chandel

10

SUDS เป็นวิธีที่จะไปไม่มีคำถามเกี่ยวกับมัน


5
และยังล้มเหลวในไฟล์ WSDL จำนวนมาก ในการสนับสนุนการอ้างสิทธิ์นั้น - ตัวอย่างเช่น Bing maps API ของ Bing ความล้มเหลวบางอย่างและ suds ไม่สามารถแยกวิเคราะห์ได้

3
ฉันพบ SUDS รองรับปลายทาง SSL
leonigmig


6

SUDS ใช้งานง่าย แต่ไม่รับประกันว่าจะเป็นผู้เข้าใหม่ หากคุณเก็บวัตถุ WSDL ไคลเอ็นต์ () ไว้ในแอพพลิเคชั่นที่มีเธรดเพื่อประสิทธิภาพที่ดีขึ้นอาจมีความเสี่ยง ทางออกของความเสี่ยงนี้คือวิธีการโคลน () โยนข้อผิดพลาด Python 5508 ที่ไม่สามารถกู้คืนได้ซึ่งดูเหมือนว่าจะพิมพ์ออกมา แต่ไม่ได้เกิดข้อยกเว้นจริงๆ อาจทำให้เกิดความสับสน แต่ก็ใช้งานได้ มันยังคงเป็นไคลเอนต์ Python SOAP ที่ดีที่สุด


4

เราเปิดตัวไลบรารี่ใหม่: PySimpleSOAPที่ให้การสนับสนุนไคลเอนต์ / เซิร์ฟเวอร์ที่ใช้งานง่าย เป้าหมายคือ: ใช้งานง่ายและมีความยืดหยุ่น (ไม่ต้องมีคลาส, ต้องมีรหัสอัตโนมัติหรือ xml), การวิปัสสนาและการสร้าง WSDL, การปฏิบัติตามมาตรฐาน WS-I, ความเข้ากันได้มาตรฐาน (รวมถึง Java AXIS,. NET และ Jboss WS) มันรวมอยู่ใน Web2Py เพื่อเปิดใช้งานโซลูชั่นเต็มสแต็ค (เสริมโปรโตคอลอื่น ๆ ที่สนับสนุนเช่น XML_RPC, JSON, AMF-RPC ฯลฯ )

หากใครบางคนกำลังเรียนรู้ SOAP หรือต้องการตรวจสอบฉันคิดว่ามันเป็นทางเลือกที่ดีในการเริ่มต้น


2

ฉันเชื่อว่า soaplib ได้คัดค้านลูกค้า SOAP ของตน ('ผู้ส่ง') ในความโปรดปรานของสบู่ ณ จุดนี้ soaplib ให้ความสำคัญกับการเป็นเว็บเซิร์ฟเวอร์ SOAP ที่ไม่เชื่อเรื่องพระเจ้า ('ผู้รับ') soaplib ปัจจุบันอยู่ภายใต้การพัฒนาที่ใช้งานอยู่และมักจะกล่าวถึงในรายการส่งเมล์ของ Python SOAP:

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


2

ในบทสรุปของฉันเรามีสิ่งนี้:

ด้านลูกค้าสบู่:

ใช้เพียง Suds-jurko (การปรับปรุง 2016) สบู่จะยังคงดีและมีการปรับปรุง

UPDATE 06/2017:ห้องสมุดสบู่-jurko จะไม่ปรับปรุงและถูกทอดทิ้งเห็นได้ชัด ,

ฉันทดสอบไลบรารีzeepแต่มีข้อ จำกัด เกี่ยวกับโทเค็นโดยตอนนี้สนับสนุน UsernameToken ฉันรายงานข้อผิดพลาดในการสร้างโทเค็นการประทับเวลาและผู้เขียนอัปเดตรหัสเพื่อแก้ไข

Zeep เริ่มต้นได้ดีและมีเอกสารที่ดีดังนั้นฉันเพิ่งย้ายรหัสของฉันจาก suds ไปที่ zeep และทำงานได้ดี

ฝั่งเซิร์ฟเวอร์สบู่:

เรามี TGWS, soaplib (pysimplesoap ไม่ผ่านการทดสอบ) การใช้ IMHO และช่วยให้ soaplib ต้องเป็นตัวเลือก

ขอแสดงความนับถืออย่างสูง,


มีเอกสาร / ตัวอย่างที่ดีสำหรับ Suds-jurko หรือไม่? ใน repo มีไฟล์. rst อยู่สองสามไฟล์ แต่มีวิธีการใช้งานเอกสารไม่มากนัก
ierdna

1

ตามที่ฉันแนะนำที่นี่ฉันแนะนำให้คุณหมุนของคุณเอง จริงๆแล้วไม่ใช่เรื่องยากและฉันคิดว่านั่นเป็นสาเหตุที่ไม่มีห้องสมุด Python SOAP ที่ดีกว่า


1

น้ำซุปดีมาก ฉันลองใช้ SOAPpy แต่ไม่ได้ทำให้มันทำงานในแบบที่ฉันต้องการในขณะที่ suds ทำงานได้ค่อนข้างไกล




0

ฉันใช้ SOAPpy กับ Python 2.5.3 ในการตั้งค่าการผลิต

ฉันต้องแก้ไขไฟล์สองสามไฟล์ใน SOAPpy (บางอย่างเกี่ยวกับรหัสส่วนหัวอยู่ในตำแหน่งที่ไม่ถูกต้อง) แต่นอกเหนือจากนั้นมันทำงานและยังคงทำอย่างน่าเชื่อถือมาก


1
เราทำเช่นเดียวกันและใช้ SOAPpy กับ Python 2.6.3
Joe L.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.