Java >> Java tutorial >  >> Tag >> java.net

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.


Java tag