View Full Version : WebSerivice regular expression
Liebe Rpg-Community,
ich bin noch nicht sattelfest mit Web-Services.
http://xxx.yyy.com:10xxx/web/services/trpTID/AUT/10106782-1627114
Sobald ein Bindestrich im Parameter TRPID ist bekomme ich:
Diese abc.abc.com-Seite wurde nicht gefunden
Für folgende Webadresse wurde keine Webseite gefunden: http://abc.abc.com:10xxx/web/services/trpTID/AUT/10106782-1627114
HTTP ERROR 404
Meine Angaben im WebService sind:
URI-Pfadvorlage für die Methode: {TENANT: \w+}/{TRPID: \w+}
Parametername Datentyp Eingabequelle Kennung Standardwert
TENANT char *PATH_PARAM TENANT *NONE
TRPID char *PATH_PARAM TRPID *NONE
Dachte mit regular expression w+ steht für char und das würde alle Zeichen abdecken.
Welchen Regex sollte ich verwenden?
Liebe Grüße
Tarki
Bestimmte Zeichen bei URL's müssen in der %-Schreibweise des ASCII-Codes übergeben werden.
Das Minus wäre dann "....%2D....."
Suche mal nach einer Funktion "UrlEncode", ob du die irgendwo hast.
\W+ steht für Worte, die durch Whitespace (Blank, Tab, Cr, LF) getrennt sind.
"ABC XXX-YYY DEF"
ergibt also 3 Worte.
Das Minus-Zeichen muss nicht kodiert werden. Es gehört zu den Safe Characters in einer URL:
Thus, only alphanumerics, the special characters "$-_.+!*'(),", and
reserved characters used for their reserved purposes may be used
unencoded within a URL.
Siehe RFC 1738
Andreas_Prouza
17-12-20, 10:32
Das mit dem Bindestrich passt.
Bei "AA BB-CC DD" bekommst du mit (\w+) 4 Ergebnisse/Wörter zurück.
Ich verstehe jedoch nicht genau wo das Problem liegt.
Welchen Suchtext genau hast du und wie gehst du suchen?
Und wie steht die Regex-Suche in Verbindung mit dem HTTP Error?
lg Andreas
camouflage
17-12-20, 11:10
Stimmt denn die ganze URI, vor den Bindestrich Expressions?
U.U. ist die Trennung der Bindestrichwerte auch ein "/".
Bespiel:
1 Wert: https://hbl.fmp.sportradar.com/feeds/en/Europe:Berlin/gismo/standings/5514995
2 Werte: https://hbl.fmp.sportradar.com/feeds/en/Europe:Berlin/gismo/fixtures/149/55149
Das kann dir aber nur der Anbieter sagen.
Danke Vielmals für euere Antworten,
Das Problem ist das ein Externes Pgm uns eine ID schickt die meist ein Integer ist.
Aber es kann sein das diese ID zusammengesetzt ist, dh. der Bindestrich.
Ich habe das so gelöst das es nun 2 Parameter sind und ich im Rpg im Bedarfsfall mit einem Bindestrich zusammensetzte.
Die URI stimmt, da ich es ohne Bindestriche Ergebnisse bekomme
Andreas_Prouza
18-12-20, 08:23
Habe das Problem immer noch nicht verstanden.
Damit du im Regex die Zahl mit Bindestrich als 1 Ergebnis bekommst kannst du folgendes Pattern verwenden:
[0-9-]+
0 bis 9 und zusätzlich Bindestrich
lg Andreas
Also klappts nun oder klappts nicht?
Normalerweise kann man die Urls per Browser einfach testen und sich die Ergebnisdaten dann ansehen.
Somit weiß man dann wie die Url auszusehen hat.
Ich glaube, mit RegEx hat dein Problem ursächlich nichts zu tun, oder?
Sorry, Jahresende ist es ein wenig stressig.
Danke für eure Bemühungen ich habe es jetzt auf 2 Parametern gesplittet und es klappt.
Weiters werde ich nach den Feiertagen auf jeden Fall das Pattern von Andreas auch ausprobieren [0-9-]+.
In diesem Sinne schöne besinnliche friedliche und erholsame Feiertage an euch alle.
Ich danke aufrichtig an die tolle Unterstützung hier.
Liebe Grüße