<p>看起来您过度指定了字段名,因此它们不匹配任何内容,因此您的<code>for customer in ...</code>永远不会运行。试试这个:</p>
<pre><code>import httplib
import xml.etree.ElementTree as ET
def send_customer_lookup(data):
soap_action = 'http://www.starstandards.org/webservices/2005/10/transport/operations/ProcessMessage'
source_port = random.randint(6000, 20000)
with httplib.HTTPSConnection('otqa.arkona.com', source_address=('', source_port)) as webservice:
webservice.putrequest('POST', '/OpenTrack/Webservice.asmx?wsdl')
webservice.putheader('User-Agent', 'OpenTrack-Heartbeat')
webservice.putheader('Content-Type', 'application/soap+xml')
webservice.putheader('Content-Length', '%d' % len(data))
webservice.putheader('SOAPAction', soap_action)
webservice.endheaders()
webservice.send(data)
response_xml = str(webservice.getresponse().read())
doc = ET.fromstring(response_xml)
results = []
for customer in doc.findall('.//CustomerLookupResponse/'):
customer_number = customer.findtext('CustomerNumber')
customer_first_name = customer.findtext('FirstName')
customer_last_name = customer.findtext('LastName')
results.append((customer_number, customer_first_name, customer_last_name))
return results
</code></pre>
<p>另外,全局变量名通常是邪恶的;我想您之所以添加它们是因为遇到了“variable not defined”错误?这应该是for循环实际上没有运行的线索。在</p>