У меня есть запрос SOAP, который, как известно, работает с использованием такого инструмента, как, скажем, SoapUI, но я пытаюсь заставить его работать с помощью urllib.
Это то, что я пробовал до сих пор, и это не сработало:
import urllib
f = "".join(open("ws_request_that_works_in_soapui", "r").readlines())
urllib.urlopen('http://url.com/to/Router?wsdl', f)
Мне не удалось найти спецификацию того, как документ должен быть отправлен на сервер SOAP.
urllib не является обязательным требованием.
Использует ли urllib ваше ограничение? вы обязательно должны это использовать?






Ну я ответил на свой вопрос
import httplib
f = "".join(open('ws_request', 'r'))
webservice = httplib.HTTP('localhost', 8083)
webservice.putrequest("POST", "Router?wsdl")
webservice.putheader("User-Agent", "Python post")
webservice.putheader("Content-length", "%d" % len(f))
webservice.putheader("SOAPAction", "\"\"")
webservice.endheaders()
webservice.send(f)
Вероятно, раньше вас сбивали с толку заголовки SOAPAction и Content-length. Обратите внимание, что добавление заголовков очень просто с использованием urllib2 - IMHO лучше использовать, чем httplib.
Короткий ответ: да, можно.
Длинный ответ:
Взгляните на этот пример, он не использует urllib, но даст вам представление о том, как подготовить запрос SOAP.
Что касается urllib, я предлагаю использовать urllib2, и да, вы можете отправить запрос SOAP с его помощью, выполните те же шаги для подготовки запроса, что и в предыдущем примере.
обе ссылки попадают в 404!
Первая ссылка @AmirMohsen работает у меня нормально, и я обновил вторую, так что теперь она тоже работает
Чем не работает? Не могли бы вы опубликовать трассировку стека