2016-10-20 6 views
0

文字列からURLに変更しようとすると、URL上でプロトコルが取得されません。どんな助けでも大歓迎です!java.net.MalformedURLExceptionを取得し続ける:変数を使用してURLを設定するときにプロトコルがありません

icon_image = weather.weather_pic(); 
//^ The string icon_image is = http://icons.wxug.com/i/c/k/clear.gif 

URL url = new URL("http://icons.wxug.com/i/c/k/clear.gif"); 


// when I try URL url = new URL(icon_image); it gives me malformed unknown protocal. 
// but if i set it like this URL url = new URL("http://icons.wxug.com/i/c/k/clear.gif") it works ?? 

私はそのは

public static String weather_pic() throws IOException { 

    // Connect to the URL using java's native library 
    String sURL = "http://api.wunderground.com/api/84b167e6ec916b78/conditions/q/NV/Reno.json"; //just a string 
    URL url = null; 
    try { 
     url = new URL(sURL); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 
    HttpURLConnection request = null; 
    try { 
     request = (HttpURLConnection) url.openConnection(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     request.connect(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    // Convert to a JSON object to print data 
    JsonParser jp = new JsonParser(); //from gson 
    JsonElement root = null; //Convert the input stream to a json element 
    try { 
     root = jp.parse(new InputStreamReader((InputStream) request.getContent())); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    JsonObject rootobj = root.getAsJsonObject(); //May be an array, may be an object. 

    JsonObject cond = rootobj.get("current_observation").getAsJsonObject(); 

    String icon = cond.get("icon_url").toString(); 

    System.out.println(icon); 
    //String zipcode = rootobj.get("query").getAsString(); //just grab the zipcode 
    String icon_x = icon; 



    return icon_x; 
} 

をやって何を表示するためにweather_pic追加のは、実際に値を持っており、それはあなたが好き"で文字列の結果を取り囲んcond.get("icon_url").toString()を使用している

Exception in thread "main" java.net.MalformedURLException: no protocol: "http://icons.wxug.com/i/c/k/partlycloudy.gif" 
    at java.net.URL.<init>(URL.java:593) 
    at java.net.URL.<init>(URL.java:490) 
    at java.net.URL.<init>(URL.java:439) 
    at widget.Widget.<init>(Widget.java:42) 
    at widget.Widget.main(Widget.java:75) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
"http://icons.wxug.com/i/c/k/partlycloudy.gif" 

Process finished with exit code 1 
+0

は、あなたが(確か 'weather.weather_picですそれらの余分"使用を取り除くために

)は'いくつかの値を返すのですか? – gschambial

+0

icon_imageを一度印刷してみてください。 – Mahi

+0

'icon_image'がその文字列を保持していると仮定するのは間違っているかもしれないと考えましたか?私の経験から、Javaは嘘をついていないので、データを見つけることができないと言われた場合、そのデータはそこにないか、そこにありますが、間違ったフォーマット(おそらく追加の文字が含まれているかもしれません)。 – Pshemo

答えて

5

を行うかどうかを確認あなたの場合:

"http://icons.wxug.com/i/c/k/partlycloudy.gif" 
^           ^

URLがプロトコル名の代わりに開始時に"を見つけたら、それについて文句を言います。その問題を解決し、

cond.get("icon_url").getAsString(); 
+0

あなたは@Pshemo – Snowman08

関連する問題