- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将 PHP 脚本转换为 python,但终究无法弄清楚为什么以下代码不起作用。
从 SOAP 服务查询返回的结果:
Suds ( https://fedorahosted.org/suds/ ) version: 0.4 GA build: R699-20100913
Service ( ExternalQueryNameAvailabilityService ) tns="http://asic.gov.au/wsdl/name/availability/external"
Prefixes (6)
ns0 = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
ns1 = "http://www.w3.org/2005/05/xmlmime"
ns2 = "uri:business.document.header.types.asic.gov.au"
ns3 = "uri:external.query.name.availability.asic.gov.au"
ns4 = "uri:fss.types.asic.gov.au"
ns5 = "uri:types.asic.gov.au"
Ports (1):
(ExternalQueryNameAvailabilityPort)
Methods (1):
externalQueryNameAvailability(ns2:businessDocumentHeaderType businessDocumentHeader, ns3:requestDataType businessDocumentBody, )
Types (113):
ns0:AttributedDateTime
ns0:AttributedURI
ns0:TimestampType
ns5:abnApplicationReferenceNumberType
ns5:abnType
ns5:accountIdentifierType
ns5:actionType
ns5:addressType
ns5:addressTypeType
ns5:agentNameType
ns5:agentType
ns5:amountSignedType
ns5:amountType
ns5:applicationStatusType
ns4:ascotDocumentNoType
ns5:asicNumericIdType
ns4:asicPaymentDetailsType
ns5:asicSignatoryType
ns2:attachmentType
ns2:attachmentsType
ns1:base64Binary
ns5:birthDetailsType
ns5:bnReferenceNumberType
ns5:browserIdentifierType
ns2:businessDocumentHeaderType
ns2:businessDocumentRequestHeaderType
ns5:businessNameIdentifierType
ns5:codeType
ns5:creditCardType
ns4:customerReferenceNumberType
ns4:debtorType
ns5:descriptionType
ns5:distinguishedNameType
ns5:distinguishedWordType
ns5:documentIdentifierType
ns5:documentNoType
ns5:emailType
ns5:entityType
ns5:exceptionListType
ns5:exceptionType
ns4:feeType
ns4:feeWithAmountType
ns4:feesType
ns5:flagType
ns4:fssAccountType
ns4:fssCustomerType
ns4:fssItemType
ns4:fssSimpleAccountType
ns4:fssTransactionType
ns2:genericResultType
ns1:hexBinary
ns5:inboxIdentifierType
ns5:intervalStatusType
ns4:invoiceType
ns5:itemSearchScopeType
ns5:itemSummaryType
ns5:itemTypeType
ns5:keyType
ns4:ledgerType
ns5:lodgementIdentifierType
ns2:messageEventType
ns2:messageEventsType
ns5:messageIdentifierType
ns2:messageTimestampType
ns2:messageTimestampsType
ns5:nameAvailabilityType
ns5:nameResultType
ns5:nameResultWithObjectionsType
ns5:nameType
ns5:nniNameType
ns5:nniNumberType
ns5:objectionType
ns5:organisationIdentifierType
ns5:organisationNamePlusIdType
ns5:originatingChannelType
ns5:originatingServiceType
ns5:outboundItemIdentifierType
ns4:paymentDetailsType
ns4:paymentMethodType
ns5:paymentType
ns5:personNameBirthType
ns5:personNameType
ns5:personNameWithRoleType
ns4:priceType
ns3:queryNameAvailabilityReplyType
ns3:queryNameAvailabilityRequestType
ns5:realmIdentifierType
ns5:realmQualifierType
ns4:receiptType
ns5:referenceNoType
ns5:rejectedType
ns3:replyDataType
ns5:replyType
ns3:requestDataType
ns5:requestFailedType
ns5:requestRejectedType
ns5:requestType
ns5:resultType
ns5:signatoryType
ns5:soapSoftwareIdentifierType
ns2:softwareInformationType
ns5:standardHeaderType
ns5:standardMessageHeaderType
ns5:stateTerritoryCodeType
ns5:statusType
ns5:streetType
ns4:suffixType
ns0:tTimestampFault
ns5:telephoneNumberType
ns5:textType
ns4:transactionType
ns4:transactionsType
ns5:trueType
尝试执行以下操作时:
con = connect('ExternalQueryNameAvailabilityPort', test, {'Content-Type': 'application/soap+xml'})
q_header = con.factory.create('ns2:businessDocumentHeaderType')
q_header.messageType = 'queryNameAvailability'
q_header.messageVersion = '2'
q_header.messageReferenceNumber = '100'
q_header.senderType = 'REGA'
q_header.senderId = '192'
q_body = con.factory.create('ns3:businessDocumentBody')
q_body.proposedName = 'Xtramedia.net PTY LTD'
q_body.companyNameAvailabilityCheck = 'true'
q_body.bnNameAvailabilityCheck = 'true'
result = con.service.externalQueryNameAvailability(q_header, q_body)
我收到以下错误:
DEBUG:suds.client:http failed:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<S:Body>
<S:Fault xmlns:ns4="http://schemas.xmlsoap.org/soap/envelope/">
<S:Code>
<S:Value>S:Receiver</S:V6alue>
</S:Code>
<S:Reason>
<S:Text xml:lang="en">org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns1:businessDocumentHeader'. One of '{"uri:business.document.header.types.asic.gov.au":businessDocumentHeader}' is expected
</S:Text>
</S:Reason>
</S:Fault>
</S:Body>
</S:Envelope>
知道为什么它会提示那个元素吗? - 我试过删除元素声明的“nsX”部分,但同样如此。
更新:以下是 PHP 脚本生成并成功的内容;
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="uri:business.document.header.types.asic.gov.au" xmlns:ns2="uri:external.query.name.availability.asic.gov.au">
<env:Body>
<ns2:request>
<ns1:businessDocumentHeader>
<ns1:messageType>queryNameAvailability</ns1:messageType>
<ns1:messageReferenceNumber>1</ns1:messageReferenceNumber>
<ns1:messageVersion>2</ns1:messageVersion>
<ns1:senderId>192</ns1:senderId>
<ns1:senderType>REGA</ns1:senderType>
</ns1:businessDocumentHeader>
<ns2:businessDocumentBody>
<ns2:proposedName>TEST</ns2:proposedName>
<ns2:bnNameAvailabilityCheck>true</ns2:bnNameAvailabilityCheck>
</ns2:businessDocumentBody>
</ns2:request>
</env:Body>
</env:Envelope>
有人有什么想法吗?
更新 2:我必须安装最新版本的 SUDS 才能使其正常工作。 - 感谢大家的回答,非常感谢。
干杯,本
最佳答案
目前还不清楚为什么 suds
使用 {uri:external.query.name.availability.asic.gov.au}
代替 {uri:business.document.header.types.asic.gov.au}
用于 businessDocumentHeader
元素。
修复它的快速而肮脏的方法是使用 suds.plugin
例如:
from suds.plugin import MessagePlugin
class NsHeaderPlugin(MessagePlugin):
def sending(self, context):
context.envelope = context.envelope.replace('ns1:businessDocumentHeader',
'ns0:businessDocumentHeader')
或者
class NsHeaderPlugin(MessagePlugin):
def marshalled(self, context):
hdr = context.envelope.childAtPath('Body/request/businessDocumentHeader')
hdr.setPrefix('hdr', 'uri:business.document.header.types.asic.gov.au')
第二个参数应该是 ns3:requestDataType
,而不是您指定的 ns3:businessDocumentBody
。
一般代码流程:
from suds.client import Client # pip install suds
#XXX: change envelope namespace
from suds.bindings import binding
binding.envns = (binding.envns[0], 'http://www.w3.org/2003/05/soap-envelope')
del binding
# change content type
headers = {'Content-Type': 'application/soap+xml; charset="UTF-8"'}
client = Client(wsdl_url, headers=headers, plugins=[NsHeaderPlugin()])
header = client.factory.create('{uri:business.document.header.types.asic.gov.au}'
'businessDocumentHeaderType')
header.messageType = "queryNameAvailability"
header.messageReferenceNumber = 1
header.messageVersion = 2
header.senderId = 192
header.senderType = "REGA"
body = client.factory.create('{uri:external.query.name.availability.asic.gov.au}'
'requestDataType')
body.proposedName = 'TEST'
body.bnNameAvailabilityCheck = 'true'
# make the call
result = client.service.externalQueryNameAvailability(header, body)
print result # for debugging, to find out what attributes are available
我没有看到未定义的 namespace ,因此在您的情况下似乎不需要 ImportDoctor
。但是,例如,如果使用了 xs:string
类型并且未提及 'http://schemas.xmlsoap.org/soap/encoding/'
那么您可以修复 wsdl 架构:
from suds.xsd.doctor import Import, ImportDoctor
imp = Import('http://schemas.xmlsoap.org/soap/encoding/')
# add namespaces where the type is used (call `imp.filter.add` multiple times)
imp.filter.add("http://asic.gov.au/wsdl/name/availability/external")
doctor = ImportDoctor(imp)
client = Client(wsdl_url, doctor=doctor)
关于Python SUDS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472785/
我正在使用 python suds基于本地 wsdl 文件制作 SOAP 客户端的库。我的目标是使用 Twisted 作为后端,因此我以异步方式查询 SOAP 服务器。 我知道这个话题已经被讨论过不同
我正在使用 Suds 从 Python 访问 SOAP Web 服务。如果我有多个 threading.Thread 执行线程,它们中的每一个都可以安全地同时访问同一个 suds.client.Cli
我有一个 django 应用程序...我正在使用 SOAP suds 客户端访问 Web 服务...我需要从在 GUI 中输入的条目创建一个用户对象...这个用户对象将被传递给一个方法。 ..但我收到
Python 新手。尝试使用 Python 构建一个简单的 soap 客户端。相同的程序在不涉及代理的环境中工作。 ***********Version 1 import suds import ur
我很确定suds不会缓存我的WSDL和XSD的like I expect it to。这是我知道不使用缓存对象的方式: 创建客户端大约需要30秒:client = Client(url) 记录器条目显
我在 wsdl 中的复杂类型方面遇到了一些麻烦。这是 wsdl 的一部分:
我正在尝试使用 suds 连接到本地网络上的 KnowledgeTree 网络服务。我可以创建客户端并检索服务信息,但是调用那里列出的 login 方法会产生 suds.WebFault: Serve
尝试使用 echosign SOAP API。 wsdl 在这里:https://secure.echosign.com/services/EchoSignDocumentService14?wsdl
我正在尝试让泡沫连接到任何东西。这是我第一次使用它。我输入的每个网址都会返回一个错误。这是我的代码;几乎完全从不同的线程复制。 from suds.client import Client url =
Trying below code to check suds working Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.
首先我要说的是,我对 SOAP 以及事情应该如何工作还很陌生。我正在使用 Vertical Response API。 我无法让 suds 为请求正确构建 xml。这是一些代码: from suds.
环境:Python 2.7.4(部分在 Windows 上,部分在 Linux 上,见下文),suds(SVN HEAD 稍作修改) 我需要调用一个采用单个参数的 Web 服务,该参数是一个 XML
我是 Python 和 suds 新手。使用 SOAP UI,对我的服务的调用如下所示: " xmlns:ns1="">
代码: security = Security() token = UsernameToken('b77a5c561934e089', 'kmfHkNZyn1U/pGAiY3+h0BoHdKI=')
我正在尝试将 PHP 脚本转换为 python,但终究无法弄清楚为什么以下代码不起作用。 从 SOAP 服务查询返回的结果: Suds ( https://fedorahosted.org/suds/
我很难让基于 suds 的 python SOAP 客户端来解析响应:客户端构造正确并且可以很好地解析 WSDL。据我所知,WSDL 中没有任何导入,因此这看起来不像是典型的 ImportDoctor
我正在尝试使用 salesforce-python-toolkit 对 Salesforce API 进行 Web 服务调用,但是我无法让客户端通过代理。由于该工具包基于 suds,我尝试继续使用 s
我正在研究 SUDS 作为 python 的 SOAP 客户端。我想检查指定服务中可用的方法,以及指定方法所需的类型。 目的是生成用户界面,允许用户选择方法,然后在动态生成的表单中填写值。 我可以获得
我正在努力解决一个非常简单的问题。我无法在 SUDS jurko 连接上设置 session 超时。我的 WSDL 很好。提取较小的数据集时一切正常。我尝试了几种设置超时的方法。虽然以下内容没有提示/
几年前,我使用 Python SUDS 连接到 Web 服务以进行冒烟测试。 Python 脚本将使用 SUDS 连接到 WSDL 文件并将 SOAP 消息发送到 Web 服务。然后 SUDS 将解析
我是一名优秀的程序员,十分优秀!