특정 요청을 파이썬에서 ESB 엔드 포인트로 보내야합니다. 기본적으로 필요한 것은 앱 1에 가지 않고 ESB에서 서비스를 호출하는 것입니다.파이썬을 사용하여 ESB 엔드 포인트에 SOAP 요청 제출
도움이 필요하시면 알려주세요.
아래에는 더미 요청이 첨부되어 있습니다.
Server Time: 11:02:58:028/Workstation Time: Monday, 22 February 2016 - 11:02:57:703
[DEBUG] SENDING SOAP REQUEST
MethodID: ID_getSubmitRequest; UID=-4820428854312736237
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:getSubmitRequest xmlns:ns2="urn:AC_IDM_SUBMITREQUESTVi" xmlns="urn:com.virsa.ae.ejbutil">
<ns2:requestDetails>
<application/>
<company>STACK OVERFLOW</company>
<customField>
<CustomFieldsDTO>
<name>Users ID Number</name>
<value>6303066107089</value>
</CustomFieldsDTO>
</customField>
<department xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<emailAddress>[email protected]</emailAddress>
<employeeType>STACK</employeeType>
<firstName>RONNY</firstName>
<functionalArea xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<lastName>RONNY</lastName>
<locale xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<location xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<managerTelephone xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<mgrEmailAddress xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<mgrFirstName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<mgrId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<mgrLastName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<priority>HIGH</priority>
<requestReason xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<requestType>SYSTEM</requestType>
<requestorEmailAddress>None</requestorEmailAddress>
<requestorFirstName>None</requestorFirstName>
<requestorId>BP5151</requestorId>
<requestorLastName>None</requestorLastName>
<requestorTelephone>None</requestorTelephone>
<roles>
<RoleData>
<action>ADD</action>
<comments xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<company xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<roleId>ZCB_STACK</roleId>
<sysId/>
<validFrom>2016-02-22T11:02:57+02:00</validFrom>
<validTo>9999-02-22T11:02:57+02:00</validTo>
</RoleData>
</roles>
<sNCName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<telephone></telephone>
<unsecureLogon>false</unsecureLogon>
<userId>BP111</userId>
<validFrom>2016-02-22T11:02:57+02:00</validFrom>
<validTo>9999-02-22T11:02:57+02:00</validTo>
</ns2:requestDetails>
</ns2:getSubmitRequest>
</soapenv:Body>
</soapenv:Envelope>
편집 : 나는 모듈 파이썬 모듈 요청을 그럭저럭 내가 코드를 실행할 때 얻을 :
Traceback (most recent call last):
File "C:\Python27\Soap.py", line 79, in <module>
verify=False)
File "C:\Python27\lib\site-packages\requests\api.py", line 108, in post
return request('post', url, data=data, json=json, **kwargs)
File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 464, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests\adapters.py", line 415, in send
raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', error(10061, 'No connection could be made because the target machine actively refused it'))
파이썬 코드 : 당신이 필요로하는
import requests
request = u"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:getSubmitRequest xmlns:ns2="urn:SAPGRC_SUBMITREQUESTVi" xmlns="urn:com.virsa.ae.ejbutil">
<ns2:requestDetails>
<application/>
<company>STACK OVERFLOW</company>
<customField>
<CustomFieldsDTO>
<name>Users ID Number</name>
<value>7706198530094</value>
</CustomFieldsDTO>
</customField>
<department xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<emailAddress>[email protected]</emailAddress>
<employeeType>STACK</employeeType>
<firstName>BEN</firstName>
<functionalArea xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<lastName>TEN</lastName>
<locale xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<location xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<managerTelephone xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<mgrEmailAddress xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<mgrFirstName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<mgrId xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<mgrLastName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<priority>HIGH</priority>
<requestReason xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<requestType>SYSTEM</requestType>
<requestorEmailAddress>None</requestorEmailAddress>
<requestorFirstName>None</requestorFirstName>
<requestorId>BP296</requestorId>
<requestorLastName>None</requestorLastName>
<requestorTelephone>None</requestorTelephone>
<roles>
<RoleData>
<action>ADD</action>
<comments xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<company xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<roleId>ZCB_STACK_RTS</roleId>
<sysId/>
<validFrom>2017-05-10T10:57:27+02:00</validFrom>
<validTo>9999-05-10T10:57:27+02:00</validTo>
</RoleData>
</roles>
<sNCName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<telephone></telephone>
<unsecureLogon>false</unsecureLogon>
<userId>BP9780</userId>
<validFrom>2017-05-10T10:57:27+02:00</validFrom>
<validTo>9999-05-10T10:57:27+02:00</validTo>
</ns2:requestDetails>
</ns2:getSubmitRequest>
</soapenv:Body>
</soapenv:Envelope>"""
encoded_request = request.encode('utf-8')
headers = {"Host": "*endpoint to send the req*",
"Content-Type": "application/soap+xml; charset=UTF-8",
"Content-Length": str(len(encoded_request)),
"SOAPAction": ""}
response = requests.post(url="*endpoint to send the req*",
headers = headers,
data = encoded_request,
verify=False)
print response.content #print response.text
SoapUI가 설치되어 있어야합니다. http 로그인 설정을 활성화하십시오. 그런 다음 새 프로젝트를 만듭니다. 요청하십시오. 콘솔에서 http 요청 (url, headers, body)을 다시 만드는 데 필요한 모든 것을 볼 수 있습니다. 가장 간단한 라이브러리는 http://docs.python-requests.org/en/master/ – simar
어쨌든 실제로는 간단합니다. url에 대한 http POST 요청을 작성하십시오 (서비스의 wsdl에서 찾으십시오). content-type application/xml을 만들고 헤더 SOAPAction (service wsdl의 값)을 추가합니다. 몸을 보낼 필요가있는 것. 완료 – simar
나는 정말로 혼란 스럽다. 전에 ESB에서 일한 적이 없다. 프론트 엔드 쪽에서 자바 코드에서 서비스를 호출하지만이 경우에는 파이썬을 사용하는 프로세스를 자동화하려고한다. – SmartKid