2011-10-26 19 views
0

我想與需要XSD web服務的工作:在請求timeInstant(見WSDL):Python Suds:如何在請求中獲取xsd:timeInstant而不是xsd:date?

<xsd:complexType name="QueryParams"> 
     <xsd:all> 
      <xsd:element name="start" type="xsd:timeInstant" minOccurs="0"/> 
      <xsd:element name="stop" type="xsd:timeInstant" minOccurs="0"/>      
     </xsd:all> 
</xsd:complexType> 

產生的SOAP XML請求因此應該包含這樣的事情:

<start xsi:type="xsd:timeInstant">2009-05-10T17:00:00Z</start> 
<stop xsi:type="xsd:timeInstant">2009-05-11T17:00:00Z</stop> 

隨着SUDS,我創建了以下對象:

qp = client.factory.create("ns0:QueryParams") 
qp.start = "2009-05-10T17:00:00Z" 
qp.stop = "2009-06-10T17:00:00Z" 

不幸的是,SUDS將其轉換爲服務器拒絕的xsd:date。

<query xsi:type="ns3:QueryParams"> 
    <start xsi:type="ns1:date">2009-05-10T17:00:00Z</start> 
    <stop xsi:type="ns1:date">2009-06-10T17:00:00Z</stop> 
</query> 

任何想法如何強制一個xsd:timeInstant?

回答

0

認爲我找到了解決方案,所以不妨將它作爲未來參考的答案。

在皁液/ XSD/sxbuiltin.py文件,還有一個工廠類

class Factory: 

    tags =\ 
    { 
     # any 
     'anyType' : XAny, 
     ... 
     # dates & times 
     ... 
     'gMonth' : XString, 

在gMonth的,我加

'timeInstant' : XString, 

的WSDL類型爲xsd:timeInstant現在被複制正確。 SOAP請求XML顯示如下:

<query xsi:type="ns3:QueryParams"> 
    <start xsi:type="ns1:timeInstant">2009-05-10T17:00:00Z</start> 
    <stop xsi:type="ns1:timeInstant">2009-06-10T17:00:00Z</stop> 
</query> 

而服務器能夠處理這個輸入。

相關問題