java.net.MalformedURLException:ingen protokol på URL baseret på en streng ændret med URLEncoder
Du skal kode din parameters værdier, før du sammenkæder dem til URL.
Omvendt skråstreg \
er specialtegn, som skal escapes som %5C
Escape-eksempel:
String paramValue = "param\\with\\backslash";
String yourURLStr = "http://host.com?param=" + java.net.URLEncoder.encode(paramValue, "UTF-8");
java.net.URL url = new java.net.URL(yourURLStr);
Resultatet er http://host.com?param=param%5Cwith%5Cbackslash
som er korrekt formateret url-streng.
Jeg har det samme problem, jeg læste url'en med en egenskabsfil:
String configFile = System.getenv("system.Environment");
if (configFile == null || "".equalsIgnoreCase(configFile.trim())) {
configFile = "dev.properties";
}
// Load properties
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("/" + configFile));
//read url from file
apiUrl = properties.getProperty("url").trim();
URL url = new URL(apiUrl);
//throw exception here
URLConnection conn = url.openConnection();
dev.properties
url = "https://myDevServer.com/dev/api/gate"
det burde være
dev.properties
url = https://myDevServer.com/dev/api/gate
uden "" og mit problem er løst.
Ifølge Oracle-dokumentation
- Skastet for at angive, at der er opstået en forkert udformet URL. Enten kunne der ikke findes nogen lovlig protokol i en specifikationsstreng, eller også kunne strengen ikke parses.
Så det betyder, at den ikke er parset inde i strengen.