2016-03-24 1 views
0

Я пытаюсь установить вид изображения в растровом, взятых из URL, однако следующая трассировка стеки появляется после того, как я запускаю следующий код:Протокола MalfomedURLException не найдено

public Bitmap getAlbumCover(Context context, String song, String artist) { 
    this.context = context; 

    song = song.replace(" ", "%20"); 
    artist = artist.replace(" ", "%20"); 

    final String finalSong = song; 
    final String finalArtist = artist; 

    Thread thread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       ObjectMapper mapper = new ObjectMapper(); 
       Document doc = Jsoup.connect("http://api.spotify.com/v1/search?q=track:" + finalSong + "%20artist:" + finalArtist+"%20" + "&type=track").ignoreContentType(true).get(); 
       String body = String.valueOf(doc.body().text()); 
       JsonNode readTree = mapper.readTree(body); 
       albumArt = readTree.findPath("url"); 

       try { 
        URL url = new URL(albumArt.toString()); 
        HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
        connection.setDoInput(true); 
        connection.connect(); 
        InputStream input = connection.getInputStream(); 
        albumImage = BitmapFactory.decodeStream(input); 
       } catch (Exception e) { 
        Log.e("Error", e.getMessage()); 
        e.printStackTrace(); 
       } 

      } catch (JsonGenerationException e) { 
       e.printStackTrace(); 
      } catch (JsonMappingException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    thread.start(); 

    Log.i("icon", "i"+ albumImage); 
    return albumImage; 
} 

Вот трассировки стеки:

03-23 20:18:43.242 6917-6991/.xyz.php_request W/nAnnotationIntrospector: Unable to load JDK7 annotation types; will have to skip 
03-23 20:18:43.943 6917-6991/.xyz.php_request E/Error: Protocol not found: "https://i.scdn.co/image/9c2c4a9ac9726bfd996ff96383178bbb5efc59ab" 
03-23 20:18:43.943 6917-6991/.xyz.php_request W/System.err: java.net.MalformedURLException: Protocol not found: "https://i.scdn.co/image/9c2c4a9ac9726bfd996ff96383178bbb5efc59ab" 
03-23 20:18:43.943 6917-6991/.xyz.php_request W/System.err:  at java.net.URL.<init>(URL.java:176) 
03-23 20:18:43.943 6917-6991/.xyz.php_request W/System.err:  at java.net.URL.<init>(URL.java:125) 
03-23 20:18:43.943 6917-6991/.xyz.php_request W/System.err:  at pillo.xyz.php_request.songlistadapter$1.run(songlistadapter.java:124) 
03-23 20:18:43.943 6917-6991/.xyz.php_request W/System.err:  at java.lang.Thread.run(Thread.java:818) 

ссылка здесь: https://i.scdn.co/image/9c2c4a9ac9726bfd996ff96383178bbb5efc59ab Если нажать на нее, она подтяните изображение. Что я делаю не так? Я уже пытался кодировать URL-адрес в UTF-8.

EDIT:

Logging альбом искусство возвращается: I/альбом искусства: "https://i.scdn.co/image/bf44daf8c3f35de83e5875bc49791c1347ef36f0"

+0

Я могу сказать, что изображение можно прочитать - проблема, вероятно, в этой строке albumImage = BitmapFactory.decodeStream (input); – gpasch

+0

ОК, так что, как вы думаете, это неправильно? –

+0

это показывает это так, что во многих тоталитариях –

ответ

1

Что я делаю неправильно?

Вы назвали неправильный метод albumArt в этой строке: URL url = new URL(albumArt.toString());. Вы должны позвонить albumArt.getTextValue() вместо albumArt.toString().

Почему:
toString() дает формат строковое JsonNode в вашем случае является строка " \" https://i.scdn.co/image/9c2c4a9ac9726bfd996ff96383178bbb5efc59ab \ "".

Вместо getTextValue() дает строку "https://i.scdn.co/image/9c2c4a9ac9726bfd996ff96383178bbb5efc59ab" что и URL хочет.

См. Разницу?

Смежные вопросы