2

我收到一个错误此元素不是预期的。

Expected is {http://com.blablabla.fbs.webservice.receiver/webservice}Sms_1 ).

我不明白它是什么,这是我试图修复它的另一天。

请向我提供一些提示或建议,以帮助我解决问题。

发送的 XML

<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header></env:Header><env:Body>
<ns1:ReceiveSms xmlns:ns1='http://com.blablabla.fbs.webservice.receiver/webservice'>
<Sms_1><id>1231231231</id><from>124214124</from><operator>test</operator><to>482414245</to>
<text>Hallo</text><numberOfParts>1</numberOfParts></Sms_1></ns1:ReceiveSms></env:Body></env:Envelope> 

错误信息

senv:Client.SchemaValidationError<string>:3:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element 'Sms_1': This element is not expected. Expected is ( {http://com.blablabla.fbs.webservice.receiver/webservice}Sms_1 ).

代码:

class sms(ComplexModel):
    _type_info = {
        "text": Unicode,
        'from': Unicode,
        "id": Long,
        "operator": Unicode,
        "to": Unicode,
        "numberOfParts": Integer,
    }


class ReceiverService(ServiceBase):

    @srpc(Array(sms), _returns=Unicode)
    def ReceiveSms(Sms_1):
        for data in Sms_1:
            test = data.get_deserialization_instance()
            print test.operator
        return Sms_1

application = Application([ReceiverService],
    tns='http://com.blablabla.fbs.webservice.receiver/webservice',
    name="ReceiverService",
    in_protocol=Soap11(validator="lxml"),
    out_protocol=Soap11()
    )

hello_app = csrf_exempt(DjangoApplication(application))
4

1 回答 1

3

您的申请文件有误。你不见了

  1. Sms_1标签中的命名空间前缀。
  2. 对象定义中的命名空间声明。

这是正确的对象声明:

class sms(ComplexModel):
    __namespace__ = 'http://com.blablabla.fbs.webservice.receiver/webservice'
    _type_info = {
        "text": Unicode,
        'from': Unicode,
        "id": Long,
        "operator": Unicode,
        "to": Unicode,
        "numberOfParts": Integer,
    }

这是一个固定的请求文件:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <ns1:ReceiveSms xmlns:ns1="http://com.blablabla.fbs.webservice.receiver/webservice">
      <ns1:Sms_1>
        <ns1:id>1231231231</ns1:id>
        <ns1:from>124214124</ns1:from>
        <ns1:operator>test</ns1:operator>
        <ns1:to>482414245</ns1:to>
        <ns1:text>Hallo</ns1:text>
        <ns1:numberOfParts>1</ns1:numberOfParts>
      </ns1:Sms_1>
    </ns1:ReceiveSms>
  </env:Body>
</env:Envelope>
于 2013-09-14T12:13:19.753 回答