mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
[http] Improve escaping of URLs (#17110)
* [http] Improve escaping of URLs Signed-off-by: Jan N. Klug <github@klug.nrw> Signed-off-by: Ciprian Pascu <contact@ciprianpascu.ro>
This commit is contained in:
parent
01cc4ff172
commit
43d74cb725
@ -37,9 +37,9 @@ Authentication might fail if redirections are involved as headers are stripper p
|
||||
|
||||
_Note:_ If you rate-limit requests by using the `delay` parameter you have to make sure that the time between two refreshes is larger than the time needed for one refresh cycle.
|
||||
|
||||
**Attention:** `baseUrl` (and `stateExtension`/`commandExtension`) should not use escaping (e.g. `%22` instead of `"` or `%2c` instead of `,`).
|
||||
**Attention:** `baseUrl` (and `stateExtension`/`commandExtension`) don't normally require percent encoding (e.g. `%22` instead of `"` or `%2C` instead of `,`).
|
||||
URLs are properly escaped by the binding itself before the request is sent.
|
||||
Using escaped strings in URL parameters may lead to problems with the formatting (see below).
|
||||
When automatic encoding is not possible (e.g. because you need to include an encoded `=` or `&` in the query string) you can use manual encoding with a doubled `%` (`%%3D` instead of `=`).
|
||||
|
||||
## Channels
|
||||
|
||||
|
@ -66,7 +66,7 @@ public class Util {
|
||||
URL url = new URL(s);
|
||||
URI uri = new URI(url.getProtocol(), url.getUserInfo(), IDN.toASCII(url.getHost()), url.getPort(),
|
||||
url.getPath(), url.getQuery(), url.getRef());
|
||||
return URI.create(uri.toASCIIString().replace("+", "%2B"));
|
||||
return URI.create(uri.toASCIIString().replace("+", "%2B").replace("%25%25", "%"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -69,9 +69,9 @@ public class UtilTest {
|
||||
|
||||
@Test
|
||||
public void uriAlreadyPartlyEscapedTest() throws MalformedURLException, URISyntaxException {
|
||||
String s = "https://foo.bar/zzl.html?p=field%2Bvalue&foostatus=This is a test String&date=2024- 07-01";
|
||||
String s = "https://foo.bar/zzl.html?p=field%%2Bvalue&foostatus=This is a test String&date=2024- 07-01";
|
||||
assertEquals(
|
||||
"https://foo.bar/zzl.html?p=field%252Bvalue&foostatus=This%20is%20a%20test%20String&date=2024-%20%2007-01",
|
||||
"https://foo.bar/zzl.html?p=field%2Bvalue&foostatus=This%20is%20a%20test%20String&date=2024-%20%2007-01",
|
||||
Util.uriFromString(s).toString());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user