2011-01-02 14 views
0

SUDSを使用してPythonを使用してCisco AXLインターフェイスにSOAP呼び出しを配置し​​ようとしています。しかし、私はカットし、それをあるsoapUIにデバッグからの正確なSOAPコールを貼り付け、実行、有効なSOAP呼び出しがPythonで機能しないSUDS

DEBUG:suds.client:sending to (https://192.168.1.10:8443/axl/) 
message: 
<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:ns0="http://www.cisco.com/AXL/API/8.0" 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:getRegion> 
     <name>Default</name> 
     </ns0:getRegion> 
    </ns1:Body> 
</SOAP-ENV:Envelope> 
DEBUG:suds.client:headers = {'SOAPAction': u'"CUCM:DB ver=8.0 getRegion"', 'Content-Type': 'text/xml; charset=utf-8'} 
ERROR:suds.client:<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:ns0="http://www.cisco.com/AXL/API/8.0" 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:getRegion> 
     <name>Default</name> 
     </ns0:getRegion> 
    </ns1:Body> 
</SOAP-ENV:Envelope> 
DEBUG:suds.client:http failed: 
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Item not valid: The specified was not found</faultstring><detail><axlError><axlcode>5007</axlcode><axlmessage>Item not valid: The specified was not found</axlmessage><request>getRegion</request></axlError></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> 
Traceback (most recent call last): 
    File "C:\Documents and Settings\Administrator\My Documents\python.py", line 30, in <module> 
    region = client.service.getRegion(regionName) 
    File "build\bdist.win32\egg\suds\client.py", line 542, in __call__ 
    return client.invoke(args, kwargs) 
    File "build\bdist.win32\egg\suds\client.py", line 602, in invoke 
    result = self.send(soapenv) 
    File "build\bdist.win32\egg\suds\client.py", line 649, in send 
    result = self.failed(binding, e) 
    File "build\bdist.win32\egg\suds\client.py", line 702, in failed 
    r, p = binding.get_fault(reply) 
    File "build\bdist.win32\egg\suds\bindings\binding.py", line 265, in get_fault 
    raise WebFault(p, faultroot) 
WebFault: Server raised fault: 'Item not valid: The specified was not found' 

の場合:

from suds.client import Client 
from suds.sax.element import Element 
wsdl = 'file:///C://Cisco//axlsqltoolkit//schema//8.0//AXLAPI.wsdl' 
client = Client(wsdl,username='administrator',password='ABC123') 
regionName = Element('name').setText('Default') 
region = client.service.getRegion(regionName) 

次のエラーを取得:

は、次のテストコードを持っています正常に動作します:

<SOAP-ENV:Envelope xmlns:ns0="http://www.cisco.com/AXL/API/8.0" 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:getRegion> 
     <name>Default</name> 
     </ns0:getRegion> 
    </ns1:Body> 
</SOAP-ENV:Envelope> 

なぜこれがSUDSで動作しないのかについては、 ciated。

答えて

0

CUCMのパブリッシャIP /ホスト名がWSDLにないため、クライアントで指定する必要があります。

from suds.client import Client 
from suds.sax.element import Element 
wsdl = 'file:///C://Cisco//axlsqltoolkit//schema//8.0//AXLAPI.wsdl' 
client = Client(wsdl, location="https://yourpublisher:8443/axl/", 
       username='administrator',password='ABC123') 
regionName = Element('name').setText('Default') 
region = client.service.getRegion(regionName) 

また、WSDLの選択フィールドがSudsによって現在読まれていないため、sudsも修正する必要があります。

ホープこれは


おっと、これを再読し、それはあなたが手動でWSDLを編集して、コメントを追加しましたように見えることができます:

には、以下のバグを参照してください。あなたのパブのIPアドレス?

関連する問題