PDA

View Full Version : WebSerivice regular expression



tarkusch
13-12-20, 11:44
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

Fuerchau
13-12-20, 12:57
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.

mihael
17-12-20, 09:20
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?

Fuerchau
17-12-20, 11:14
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.

tarkusch
18-12-20, 05:55
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

Fuerchau
18-12-20, 11:01
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?

tarkusch
22-12-20, 07:54
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