2017-04-24 4 views
1

APIを使用してデータを取得しようとしています。私は複数の行を含むbufferedreaderでデータを取得します。しかし、私はそれをStringで抽出することはできません。私はbufferedreaderがデータを持っていることを知っています、私は複数の.readLine();を使用してそれを表示してチェックしましたが、ループは動作しません。androidのバッファードリーダーから読み取ることができません

protected String[][] doInBackground(Cursor[] cursors) 
    { 
     String list[][] = new String[cursors[0].getCount()][2]; 
     //while(cursors[0].moveToNext()) 
     { 
      String DATA="",temp; 
      String baseAddress="http://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY"; 
      String apiKey="J63P"; 
      Uri Url = Uri.parse(baseAddress) 
        .buildUpon() 
        .appendQueryParameter("symbol","SBIN") 
        .appendQueryParameter("interval","1min") 
        .appendQueryParameter("apikey",apiKey) 
        .build(); 
      Log.d("built URL",Url.toString()); 
      try 
      { 
       url= new URL(Url.toString()); 
       urlconnection= (HttpURLConnection) url.openConnection(); 
       urlconnection.setRequestMethod("GET"); 
       urlconnection.connect(); 

       InputStream inputStream = urlconnection.getInputStream(); 
       if (inputStream==null) 
       { 
        Log.d("inputstream","empty"); 
        return null; 
       } 
       BufferedReader reader= new BufferedReader(new InputStreamReader(inputStream)); 

       while((temp = reader.readLine())!=null) 
       { 
        DATA.concat(temp); 
       } 
       Log.d("unedited",DATA); 


      } 
      catch(IOException e) 
      { 
       Log.e("createList", "Error in url ", e); 
       return null; 
      } 


      try { 
       String List = "Time Series (1min)"; 

       JSONObject full = new JSONObject(DATA); 
       JSONArray permin = full.getJSONArray(List); 

       for (int i=0;i<permin.length();i++) 
       { 
        String open,high,low,close; 
        JSONObject current = permin.getJSONObject(i); 

        open = current.getString("1. open"); 
        high = current.getString("2. high"); 
        low = current.getString("3. low"); 
        close = current.getString("4. close"); 
        Log.d("Extracted ",open + " " + high + " " + low + " " + close +"\n"); 
       } 

      } 
      catch (JSONException e) 
      { 
       Log.e("createList","Error in json",e); 
      } 

     } 
     return list; 
    } 

とログは次のとおりです。また

04-24 14:34:52.009 3574-3619/lcukerd.com.stocknotifier D/built URL: http://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=SBIN&interval=1min&apikey=J63P 
04-24 14:34:53.723 3574-3619/lcukerd.com.stocknotifier E/createList: Error in json 
                     org.json.JSONException: End of input at character 0 of 
                      at org.json.JSONTokener.syntaxError(JSONTokener.java:450) 
                      at org.json.JSONTokener.nextValue(JSONTokener.java:97) 
                      at org.json.JSONObject.<init>(JSONObject.java:156) 
                      at org.json.JSONObject.<init>(JSONObject.java:173) 
                      at lcukerd.com.stocknotifier.MainActivity$createList$override.doInBackground(MainActivity.java:123) 
                      at lcukerd.com.stocknotifier.MainActivity$createList$override.access$dispatch(MainActivity.java) 
                      at lcukerd.com.stocknotifier.MainActivity$createList.doInBackground(MainActivity.java:0) 
                      at lcukerd.com.stocknotifier.MainActivity$createList.doInBackground(MainActivity.java:69) 
                      at android.os.AsyncTask$2.call(AsyncTask.java:288) 
                      at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                      at java.lang.Thread.run(Thread.java:818) 

は、ループも働いていない状態で、内側の後の文を「ログ」ことに注意してください。 Pls、助けてくださいそれを解決してください。あなたはJSONデータで例外が発生しました

答えて

0

、それはログから非常に明確である、それは言う:

4月24日14:34:53.723 3574から3619/lcukerd.com.stocknotifier E/createList: JSONで エラー

そうそう:

変更この行:

DATA.concat(temp); 

もJavaで、それはそれをこのように書く方が良いでしょう

data = DATA.concat(temp); 

へ:文字列データが空であるため

data += temp; 
+0

JSONの誤差があります。 – Lcukerd

+0

@Lcukerdあなたがデータを入力していないので、私の編集をチェックする –

関連する問題