PythonからESBエンドポイントに特定のリクエストを送信する必要があります。基本的に私が必要とするのは、アプリに行くことなくESBからサービスを呼び出すことです。Pythonを使用してSOAPリクエストをESBエンドポイントに送信
ご要望があればお手伝いしてください。
以下、ダミーリクエストを添付しました。
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>
編集:私は、モジュールのpythonモジュールの要求を得ることができたと私は私が手のコードを実行する場合:
Pythonのコード:
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/ja/master/ – simar
です。とにかく、実際には単純です。 urlへのhttp POST要求を作成します(サービスのwsdlで検索します)。 content-type application/xmlを作成し、ヘッダーSOAPAction(service wsdlの値)を追加します。あなたが送る必要のある身体。完了しました – simar
私は本当に混乱しています。以前はESBで作業したことはありませんでした。私はフロントエンド側からJavaコードからサービスを呼び出していますが、この場合はPythonを使用していくつかのプロセスを自動化しようとしています。 – SmartKid