2017-02-17 16 views
0

Привет, ребята У меня проблема с созданием файла JSON с URL-адресом google, который у меня есть. Это мой код, который я использую.Создание файла JSON с URL-адресом

import android.util.Log; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 


public class DownloadUrl { 

public String readUrl(String strUrl) throws IOException, InterruptedException { 
    Log.d("URLS = ",strUrl); 
    Thread.sleep(2000); 
    String data = ""; 
    InputStream iStream = null; 
    HttpURLConnection urlConnection = null; 
    try { 
     URL url = new URL(strUrl); 

     // Creating an http connection to communicate with url 
     urlConnection = (HttpURLConnection) url.openConnection(); 

     // Connecting to url 
     urlConnection.connect(); 

     // Reading data from url 
     iStream = urlConnection.getInputStream(); 

     BufferedReader br = new BufferedReader(new InputStreamReader(iStream)); 

     StringBuffer sb = new StringBuffer(); 

     String line = ""; 
     while ((line = br.readLine()) != null) { 
      sb.append(line); 
     } 

     data = sb.toString(); 
     Log.d("downloadUrl", data.toString()); 
     br.close(); 

    } catch (Exception e) { 
     Log.d("Exception", e.toString()); 
    } finally { 
     iStream.close(); 
     urlConnection.disconnect(); 
    } 
    return data; 
} 

}

Он отлично работает, когда я бросить URL, который выглядит, как это в него. https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=40.7207523,-73.383851&radius=4828&type=bar&key=MYKEY

Но когда я пытаюсь бросить URL-адрес, который выглядит в этом. https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJe3AmoGsr6IkRuWcK1LAh-DE&key=MYKEY

Я получаю сообщение об ошибке: D/GooglePlacesReadTask: java.lang.NullPointerException: Попытка вызвать виртуальный метод 'аннулируются java.io.InputStream.close()' на нулевой ссылки на объект

Я не знаю, как я это исправить. Любая помощь?

+0

Ваш код кажется нормально, я не вижу никаких проблем с кодом. где, вы всегда можете добавить, 'if (iStream! = Null) iStream.close();' – nikhilr57

+0

Спасибо за ответ так быстро. Я попробовал то, что вы предложили. Теперь im получение: D/GooglePlacesReadTask: android.os.NetworkOnMainThreadException –

+0

Зачем это работать с одной ссылкой, а не с другой? –

ответ

1

Ааа вы не упомянули об этом в андроиде, Я полагаю, это потому, что вы сказали, android.os.NetworkOnMainThreadException в вашем комментарии

Android не позволяют трудоемкие задачи на главном потоке, использование AsyncTask, чтобы вызвать вашу функцию или использовать обычную старую java-цепочку

0

Исключение сети в основной теме возникает при запуске сетевой операции в основном потоке. Вообще AsyncTask используется для этих работ, но если вы хотите использовать один и тот же код написанный Просто добавьте ..

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 

StrictMode.setThreadPolicy(policy); 

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

  • Нет связанных вопросов^_^