无法在肥皂水中创建肥皂过滤器

2024-09-30 22:12:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个SOAP请求,它采用以下XML主体

<x:Body>
    <ser:CreateExportJobRequest>
        <ser:ExportJobTypeName>Products</ser:ExportJobTypeName>
        <ser:ExportColumns>
            <ser:ExportColumn>Id</ser:ExportColumn>
            <ser:ExportColumn>itemName</ser:ExportColumn>
        </ser:ExportColumns>
        <ser:ExportFilters>
            <ser:ExportFilter id="updatedSince">
                <ser:Text>2.0</ser:Text>
            </ser:ExportFilter>
        </ser:ExportFilters>
        <ser:Frequency>ONETIME</ser:Frequency>
    </ser:CreateExportJobRequest>
</x:Body>

我可以使用Boomerang发出成功的请求。在

现在我想在python代码中使用它。所以我试过了

^{pr2}$

我有个错误

'list' object has no attribute 'id'

因为创建了一个有点错误的XML请求

<ns1:ExportFilters>
    <ns1:ExportFilter>updatedSince</ns1:ExportFilter>
</ns1:ExportFilters>

所以我尝试了一些其他的东西,比如ExportFilter

inputElement.ExportFilters.ExportFilter = [{'id': 'updatedSince', 'text': updatedSince}]

以及

inputElement.ExportFilters.ExportFilter = [('updatedSince', updatedSince)]

以及

inputElement.ExportFilters.ExportFilter = [{'updatedSince': updatedSince}]
# says, Type not found: 'updatedSince'

以及

inputElement.ExportFilters.ExportFilter = [
    {'key': 'updatedSince', 'value': {'key': 'eq', 'value': updatedSince}}
]
# says, Type not found: 'value'

但什么都没用。在

在设置ExportFilter之前,它的值的形式是

ExportFilters: (ExportFilters){
  ExportFilter[] = <empty>
}

请帮忙。在


Tags: textidvaluebodyxmlserns1inputelement
1条回答
网友
1楼 · 发布于 2024-09-30 22:12:49

经过调试和一些suds代码,我找到了修复。在

修复程序的完整代码片段:

inputElement = client.factory.create('CreateExportJobRequest')

inputElement.ExportJobTypeName = "Products"
inputElement.ExportColumns.ExportColumn = ["Id", "itemName"]

inputElement.Frequency = 'ONETIME'

if updatedSince:
    efilter = client.factory.create("ExportFilter")
    efilter._id = 'updatedSince'
    efilter.Text = updatedSince
    inputElement.ExportFilters.ExportFilter.append(efilter)

t = client.service.CreateExportJob(inputElement.ExportJobTypeName, inputElement.ExportColumns, inputElement.ExportFilters, None, None, inputElement.Frequency)

调试: 因为suds引发了TypeNotFound异常,所以我在suds中查找了raise TypeNotFound的所有地方。我在PyCharm中添加了调试点。在

我发现来自Typed类的start方法引发了我得到的错误。在

^{pr2}$

所以从这个逻辑出发,我找到了解决办法。在

但是,如果有人为此建议一个标准的程序,那就太好了。在

相关问题 更多 >