I am a complete Python noob
이제 foreshadowing이 완료되었으므로 SOAP 응답에서 일부 정보를 구문 분석하려고합니다.올바른 응답을받지 못하는 이유는 무엇입니까?
<soap:Body>
<ProcessMessageResponse xmlns="http://www.starstandards.org/webservices/2005/10/transport">
<payload>
<content id="Content0">
<CustomerLookupResponse xmlns="">
<Customer>
<CompanyNumber>ZQ1</CompanyNumber>
<CustomerNumber>1051012</CustomerNumber>
<TypeCode>I</TypeCode>
<LastName>NAME</LastName>
<FirstName>BASIC</FirstName>
<MiddleName/>
<Salutation/>
<Gender/>
<Language/>
<Address1/>
<Address2/>
<Address3/>
<City/>
<County/>
<StateCode/>
<ZipCode>0</ZipCode>
<PhoneNumber>0</PhoneNumber>
<BusinessPhone>0</BusinessPhone>
<BusinessExt>0</BusinessExt>
<FaxNumber>0</FaxNumber>
<BirthDate>0</BirthDate>
<DriversLicense/>
<Contact/>
<PreferredContact/>
<MailCode/>
<TaxExmptNumber/>
<AssignedSalesperson/>
<CustomerType/>
<PreferredPhone/>
<CellPhone>0</CellPhone>
<PagePhone>0</PagePhone>
<OtherPhone>0</OtherPhone>
<OtherPhoneDesc/>
<Email1/>
<Email2/>
<OptionalField/>
<AllowContactByPostal/>
<AllowContactByPhone/>
<AllowContactByEmail/>
<BusinessPhoneExtension/>
<InternationalBusinessPhone/>
<InternationalCellPhone/>
<ExternalCrossReferenceKey>0</ExternalCrossReferenceKey>
<InternationalFaxNumber/>
<InternationalOtherPhone/>
<InternationalHomePhone/>
<CustomerPreferredName/>
<InternationalPagerPhone/>
<PreferredLanguage/>
<LastChangeDate>20130401</LastChangeDate>
<Vehicles/>
<CCID/>
<CCCD>0</CCCD>
</Customer>
</CustomerLookupResponse>
</content>
</payload>
</ProcessMessageResponse>
</soap:Body>
나는 내가 원하는 응답 구문 분석하기 위해 무엇을했는지 보여주기 위해 다음과 같은 코드를 가지고 : 리스폰스의 몸은 아래와 같습니다 내가 확실하지 오전
customer_number = ''
customer_first_name = ''
customer_last_name = ''
def send_customer_lookup(data):
soap_action = 'http://www.starstandards.org/webservices/2005/10/transport/operations/ProcessMessage'
source_port = random.randint(6000, 20000)
webservice = httplib.HTTPSConnection('otqa.arkona.com', source_address=('', source_port))
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 = webservice.getresponse()
response_xml = str(response.read())
doc = ET.fromstring(response_xml)
for customer in doc.findall('.//{http://www.starstandards.org/webservices/2005/10/transport}Payload'):
global customer_number
global customer_first_name
global customer_last_name
customer_number = customer.findtext('{http://www.starstandards.org/webservices/2005/10/transport}CustomerNumber')
customer_first_name = customer.findtext('{http://www.starstandards.org/webservices/2005/10/transport}FirstName')
customer_last_name = customer.findtext('{http://www.starstandards.org/webservices/2005/10/transport}LastName')
webservice.close()
return customer_number, customer_first_name, customer_last_name, response_xml
을 이유를 출력이 ' ', ' ', ' ', <xml response>...
(안 대답하지만) 그 webservice.putrequest 물건 리터의 많은 그것과 같은 ooks는 일반적인 send_soap_request() 함수로 추상화되어야합니다. –
@HughBothwell 고맙습니다. 지금 당장은 작동하는 것을 필요로합니다. – DarthOpto