XML SOAP Request senden

Wer einen WebService verwendet, muß nicht immer gleich einen eigenen Client entwickeln. Es ist auch möglich SOAP Request mit Tools zu senden. In diesem Beispiel wird ein WebService zum Löschen von Nachrichten angesprochen.

Zu erst erstellen Datei mit dem XML SOAP Request.

vim soap_request.xml

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:removeNachricht xmlns:ns1="http://exposed.storage.service.de/"
<arg0>4860</arg0>
</ns1:removeNachricht>
</soap:Body>
</soap:Envelope>

Mit dem Tool curl senden wir einen HTTP Post Request, als HTTP Header wird die Methode „removeNachricht“ von dem WebService gesendet.

curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction: removeNachricht" -d @soap_request.xml -X POST http://localhost:7010/soa-infra/services/StorageService/StorageWebService

Wenn wir eine Liste von Nachrichten löschen wollen, können wir diese Shell Script verwenden. Die NachrichtenID werden in der Datei „list.txt“ gespeichert. Die SOAP Datei wird immer wieder kopiert und in der Datei die ID ersetzt.

#!/bin/sh
URL=http://localhost:7010/soa-infra/services/StorageService/StorageWebService
 
cat list.txt | while read ID
do
 echo "Delete Nachricht: ${ID}"
 cp soap_request.xml.org soap_request.xml
 sed -i s/##NACHRICHT_ID##/${ID}/g soap_request.xml
 curl \
  -H "Content-Type: text/xml; charset=utf-8" \
  -H "SOAPAction: removeNachricht" \
  -d @soap_request.xml -X POST ${URL}
 sleep 2
done