i'm extracting address from a source but some extract doesnt have http:// infront of the address, how do i check if the address has http:// and if they dont how do i add the http:// infront? :O
Getting this error which i guess is due to the "lack" of http:// infront
java.net.MalformedURLException: no protocol: www.speedtest.net
at java.net.URL.<init>(URL.java:583)
at java.net.URL.<init>(URL.java:480)
at java.net.URL.<init>(URL.java:429)
at a.PageRead.r(PageRead.java:29)
at a.ThreadDownloaderWriter.run(ThreadDownloaderWriter.java:35)
at java.lang.Thread.run(Thread.java:722)
 public StringBuilder readPage() {
        try {
            URL url = new URL(this.strURL);
            System.out.println(this.strURL);
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            reader.close();
            return sb;
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return new StringBuilder("");
        } catch (IOException e) {
            e.printStackTrace();
            return new StringBuilder("");
        }
    }
                The literal answer to your question looks something like this:
String url = ... ; // Whatever
if (!url.startsWith("http://")) {
    url = "http://" + url;
}
But that's still not a very good solution. For example, what about https URLS? How about ftp or even filesystem URLs (file://). And then you may want to think about things like case-sensitivity ("http://" != "HTTP://" != "HttP://" even though in reality they all mean the same thing and will be accepted by Java's URL class).
You could try being a little more careful:
if (!url.toLowerCase().matches("^\\w+://.*")) {
    url = "http://" + url;
}
This matches the beginning of the URL string against any "word character" followed by a colon (:) and two slashes (//), and then defaults it to http:// if the protocol part of the URL is missing. This will cover significantly more cases than the original (literal) answer.
Ultimately, if someone gives you a URL without the protocol part, it's an invalid URL.
You should consider picking up a book on Java programming, as these are all basic logic/Java API issues.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With