tranministrator
Goto Top

Auf Windows-Basis mehrere XML Files an Webservice HTTP-S schicken Wildcard

Hallo liebe Admins,

ich stehe mal wieder vor einer riesigen Aufgabe die eigentlich so einfach sein könnte wenn da nicht die Vorgaben wären:

- XML Files werden an ein Webservice gesendet (funktioniert bis zu einem gewissen Maß bereits mit CURL)
- Problematisch wird es wenn man mehrere versenden will da die Dateinamen viel zu lang sind und auch von Tag zu Tag variieren. (globbing bei CURL schafft das nicht)

Die können mal so und mal so lang sein und Curl schafft beim Globbing nicht die Anzahl.

flightdata10420141013209.xml
flightdata00003120141015155552.xml

Somit müsste das Skript es erlauben die Daten mit flightdata*.xml (Wildcard) zu versenden damit alle Files in diesem Ordner versendet werden um sie danach zu verschieben.

Kennt jemand von euch ein tolles Tool welches das abdeckt und hat wer auch Beispiele dafür um das zu realisieren?

hier mal das Schnippsel für den CURL Upload an welchem ich schon gearbeitet habe:

Curl -T "V:\flightdata[1-2].xml" -u xxx:xxx -H "Content-Type:text/xml" -H SOAPAction:uploadSalesReport" "https://xxxl" -k  


Vielen Dank fürs Lesen!

LG

Robs

Content-Key: 254186

Url: https://administrator.de/contentid/254186

Printed on: April 25, 2024 at 06:04 o'clock

Member: colinardo
Solution colinardo Nov 07, 2014, updated at Nov 10, 2014 at 07:39:18 (UTC)
Goto Top
Hallo Robs,
bau z.B. um deinen Curl-Aufruf eine FOR-Schleife die über die XML-Dateien iteriert:
@echo off
for %%a in (V:\flightdata*.xml) DO @(
   Curl -T "%%a" -u xxx:xxx -H "Content-Type:text/xml" -H SOAPAction:uploadSalesReport" "https://xxxl" -k  
)


Ich persönlich würde das mit Powershell machen und dem CMDLet New-WebServiceProxy

Das sieht ungefähr so aus (hab's länger nicht mehr gemacht und gerade leider keinen Test-Webservice zur Hand, deswegen ohne Gewähr)
$username = 'Benutzername'  
$password = 'Passwort'  
$url = 'https://yoursecretserverurl/webservices/sswebservice.asmx'  

# Webservice-Proxy erstellen
$proxy = New-WebServiceProxy -uri $url -Credential (New-Object PSCredential($username,(ConvertTo-SecureString $password -AsPlainText -Force)))

# Dateien filtern
$files = gci 'V:\flightdata*.xml'  

# für jede Datei die Upload-Funktion ausführen
foreach($file in $files){

    # Funktion des Webservice aufrufen die die Datei hochlädt
    # $proxy.uploadSalesReport(???????)
    
   # zu deiner Hilfe alle Methoden des Webservice auflisten
   # proxy  | get-member -type method
}
Wie die Funktion für den Upload zu handhaben ist müsstest du aus der Doku zum deinem Webservice nachlesen.

Grüße Uwe
Member: Tranministrator
Tranministrator Nov 10, 2014 at 07:41:10 (UTC)
Goto Top
Hallo Uwe face-smile,

vielen Dank für deine schnelle und professionelle Hilfe!

Die FOR Schleife um das Curl herum war genau richtig und hat auf Anhieb funktioniert.

LG

Robs