-
SYSTOOLS.URLENCODE
Hallo,
ich habe gerade ein Problem beim SYSTOOLS.URLENCODE festgestellt, wenn in meiner URL Leerzeichen vorkommen. Hier ist ein Beispiel:
Code:
SELECT *
FROM XMLTABLE('$doc/hibcData'
PASSING
XMLPARSE(DOCUMENT SYSTOOLS.HTTPGETCLOB
('http://ban:8080/webservices/hibc/code1/' concat systools.urlencode('+DIVO6676681', 'UTF-8') concat '/code2/' concat systools.urlencode('+$$3191208W00158 C', 'UTF-8'), ''))
AS "doc"
COLUMNS
Lic VARCHAR(4) PATH 'lic',
ProdNumber VARCHAR(18) PATH 'productNumber',
ExpDate VARCHAR(8) PATH 'expiryDate',
Lot VARCHAR(18) PATH 'lotNumber',
Serial VARCHAR(18) PATH 'serialNumber',
ProdDate VARCHAR(8) PATH 'productionDate',
Unit VARCHAR(1) PATH 'unit',
Quantity VARCHAR(5) PATH 'quantity'
) AS WebServiceResult;
Ich übergebe meinem REST-Webservice hier 2 Parameter (CODE1 und CODE2 mit den jeweiligen Werten). In CODE2 ist ein Leerzeichen vorhanden. Jetzt hätte ich eigentlich erwartet, dass dieses Leerzeichen in "%20" encodiert wird. Es wird aber in ein "+" encodiert und somit im Webservice als normales Pluszeichen interpretiert anstatt als Leerzeichen.
Wie kann ich dieses Problem umgehen? In anderen Sprachen gibt es z.B. urlencode() für "+" und rawurlencode() für "%20".
Gruß,
KM
-
Die Frage ist, wann ist es ein Parameter, wann gehört es zum Pfad.
Ich denke urlencode sollte es korrekt machen, wenn du den gesamten String übergibst.
Also deine Parameter sind eigentlich Pfadangaben.
Korrekt wäre also alles in ein concat und dann an urlencode übergeben.
Diskussion siehe hier:
http://stackoverflow.com/questions/1...haracter-or-20
-
Ich habe jetzt herausgefunden, dass die Funktion SYSTOOLS.URLENCODE intern die Java-Klasse "java.net.URLEncoder" verwendet und diese encodiert das Leerzeichen eben in ein "+".
Als Workaround wird hier empfohlen nach dem URLENCODE noch einen REPLACE von "+" nach "%20" durchzuführen.
Damit funktioniert's nun.
Gruß,
KM
-
Das funktioniert aber nur, wenn ein echtes "+" ggf. in %2B umgesetzt wurde.
-
Das funktioniert aber nur, wenn ein echtes "+" ggf. in %2B umgesetzt wurde.
Deshalb hatte ich ja geschrieben, dass der REPLACE erst nach dem URLENCODE durchgeführt werden darf. Dann ist das "+" ja bereits umgesetzt.
Gruß,
KM
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 14-02-18, 11:11
-
By rischer in forum IBM i Hauptforum
Antworten: 28
Letzter Beitrag: 02-10-15, 11:36
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks