Изменить запрос suds для целевого SOAP

У меня проблема с python suds, пытающимся создать правильный XML-запрос Suds:

Это мой код пены (после нескольких испытаний):

from suds import *
from suds.client import Client
from suds.transport.http import HttpAuthenticated
import logging

url = 'http://ws/webservices/600/ws.asmx?wsdl'
soap_client = Client(url, location='http://ws/webservices/600/ws.asmx')
soap_client.set_options(port='GatewayWebServiceSoap')

person = soap_client.factory.create('checkIfExists') 
person.UserID = '[email protected]'
person.SessionID = ''

eventService = soap_client.service.CustomerService(person)

print 'last received:'                                                                                                                                                                                          
print soap_client.last_received()                                                                                                                                                                               
print '-------------------------------------'                                                                                                                                                                                               
print 'last sent:'
print soap_client.last_sent()

Вот что отправляет мой suds:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://service.example.at/gateway/v6.00" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <ns1:Body>
       <ns0:Service>
          <ns0:Service>
             <ns0:SessionID></ns0:SessionID>
             <ns0:UserID>[email protected]</ns0:UserID>
          </ns0:Service>
       </ns0:Service>
    </ns1:Body>
</SOAP-ENV:Envelope>

И это то, что ожидает WebService:

<?xml version="1.0" encoding="UTF-8"?>
<GATEWAY xmlns="urn:service-example-at:gateway:v4-00">
    <Service>
        <checkIfExists>
            <SessionID></SessionID>
            <UserID>test</UserID>
        </checkIfExists>
    </Service>
</GATEWAY>

Мои вопросы:

  • Как изменить SOAP-ENV:Envelope -> GATEWAY
  • Как удалить пространства имен ns1, ns0?
  • Как я могу удалить тело

person user966660    schedule 28.02.2012    source источник


Ответы (1)


Если вы действительно не заботитесь о WSDL и прочем, вы можете легко написать генератор запросов самостоятельно, поскольку запрос xml - это просто строковый шаблон. Это то, что я сделал для своих мыльных нужд.

person wiz    schedule 02.03.2012
comment
Извините, но это не вариант - наш сервис WSDL действительно огромен :-) - person user966660; 07.03.2012