Как вызвать мыльный API с Python

В прошлом я использовал API, это первый SOAP, который я пытался использовать. Я копирую, вставляю и изменяю часть этого кода из учебника SOAP, но я видел, как он делал 10 различных способов в 10 различных примерах, но ни один из них не очень ясен в объяснении кода. Возможно, следующий код не лучший способ сделать это, но вот почему я ищу какую-то помощь и четкое руководство. Большое спасибо.

import string, os, sys, httplib

server_addr = "auctions.godaddy.com"
service_action = "GdAuctionsBiddingWSAPI/GetAuctionList"

body = """
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.example.com/services/wsdl/2.0">
<soapenv:Header/>
<soapenv:Body>
<ns:serviceListRequest>
<ns:userInfo>
</ns:userInfo>
</ns:serviceListRequest>
</soapenv:Body>
</soapenv:Envelope>"""

request = httplib.HTTPConnection(server_addr)
request.putrequest("POST", service_action)
request.putheader("Accept", "application/soap+xml, application/dime, multipart/related, text/*")
request.putheader("Content-Type", "text/xml; charset=utf-8")
request.putheader("Cache-Control", "no-cache")
request.putheader("Pragma", "no-cache")
request.putheader("SOAPAction", "https://auctions.godaddy.com/gdAuctionsWSAPI/gdAuctionsBiddingWS.asmx?op=GetAuctionList" + server_addr + service_action)
request.putheader("Content-Length", "length")
request.putheader("apiKey", "xxxxxx")
request.putheader("pageNumber", "1")
request.putheader("rowsPerPage", "1")
request.putheader("beginsWithKeyword", "word")
request.endheaders()
request.send(body)
response = request.getresponse().read()

print response

Ответ 1

Не пытайтесь запустить собственный SOAP-клиент - несмотря на название, SOAP ничего, но просто.

Найдите любую достойную библиотеку SOAP и используйте ее для связи с SOAP.

Как правило, вопрос о который SOAP-библиотека является "лучшим" , по своей природе является спорным, и ответ, как правило, меняется со временем, поскольку проекты вступают и выходят моды. Выберите тот, который хорошо работает для вашего случая использования, и любой из них, вероятно, будет лучше, чем писать свои собственные.

Ответ 2

Я могу посоветовать вам использовать suds. Это довольно хорошо и широко используется.

Обновление: Основание suds roject неактивно в течение длительного времени. Появилась новая вилка текущего проекта, которая сейчас весьма актуальна.

asuds project