2017-02-17 5 views
0

こんにちは私は私が持っているgoogleのURLからJSONファイルを作成する際に問題があります。これは私が使用しているコードです。URLからJSONファイルを作成

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が:nullのオブジェクト参照の上 ')のボイドjava.io.InputStream.close(' 仮想メソッドを呼び出すための試みが

私は知りませんどのように私はこれを修正します。どんな助け?あなたは、これはアンドロイドである言及しなかった

+0

.. は、一般的にAsyncTaskは、これらの作品のために使用されていますが、同じコードを使用したい場合は、単に追加書かれ、私は、コードに問題が表示されません。 どこでも、あなたはいつも追加することができます 'if(iStream!= null)iStream.close();' – nikhilr57

+0

すごくお返事ありがとうございます。私はあなたが提案したものを試しました。今すぐ取得:D/GooglePlacesReadTask:android.os.NetworkOnMainThreadException –

+0

なぜこれは1つのリンクで動作し、他のリンクではありませんか? –

答えて

1

ああ、あなたが言ったので、私はこれを推定 、

Androidがメインスレッドに時間のかかる作業を許可していませんあなたのコメントで android.os.NetworkOnMainThreadException 、 使用AsyncTaskあなたの関数を呼び出したり、普通のjavaスレッドを使用したりします。

0

メインスレッドでネットワーク操作を実行するとネットワークが発生します。あなたのコードは罰金だ

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

StrictMode.setThreadPolicy(policy); 
関連する問題