从谷歌电子表格中获取JSON

时间:2017-05-27 12:13:26

标签: java android json google-sheets

您好我正在尝试为学校项目创建一个Android应用程序,它创建了一个包含在Google工作表中的某些数据的界面。 我在尝试检索其json字符串时遇到问题,并通过缓冲区将其转换为String,问题是执行此操作的标准方法无效。 以下是我用于检索数据的代码,我正在连接的链接以及运行时获取的日志:https://script.googleusercontent.com/macros/echo?user_content_key=YUm908_F4USanZMXYLM5SSNopIaGpE9lsPLN4Gd76Ev-ps1HtglllhSfOon8LijwbaCtE5yErItehXcvQml5MHPUIoB-gnlVOJmA1Yb3SEsKFZqtv3DaNYcMrmhZHmUMWojr9NvTBuBLhyHCd5hHa1ZsYSbt7G4nMhEEDL32U4DxjO7V7yvmJPXJTBuCiTGh3rUPjpYM_V0PJJG7TIaKp6DlhKiyTgeD37GVXNPmWi9BLr90SAXNavw2PD7IFU7Gool08_D5VdRirKpWCIA4qy6ynGhL6kv9iPAz3iOzAmo&lib=MbpKbbfePtAVndrs259dhPT7ROjQYJ8yx

public class JSONTask {
    private String txtJson=null;

    public String JSONTask(URL url){
        HttpURLConnection connection= null;
        BufferedReader reader = null;

        Log.v("JSONTAKS","READY TO GET JSON");
        Log.v("JSONTAKS URL",url.toString());

        try{
            connection=(HttpURLConnection) url.openConnection();
            connection.connect();
            Log.v("JSONTask","READY TO BUFFER");

            InputStream stream=connection.getInputStream();
            reader =new BufferedReader(new InputStreamReader(stream));

            StringBuffer buffer = new StringBuffer();
            String line="";
            Log.v("JSONTask",stream.toString());

            while((line = reader.readLine())!=null){
                buffer.append(line+"\n");
                Log.v("JSONTASK", buffer.toString());

            }
            Log.v("JSONTASK txt",buffer.toString());
            txtJson=buffer.toString();
            Log.v("JSONTASK txt",txtJson);

        }catch(Exception e){
            e.printStackTrace();
            Log.v("EXCEPTION", "EXCEPTION THROWN");
        }finally {
            if(connection!=null){
                connection.disconnect();
            }
        }try{
            if(reader!=null){
                reader.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }


        return txtJson;
    }

https://i.stack.imgur.com/p99eR.png

1 个答案:

答案 0 :(得分:1)

强烈建议在android上使用现有的库。如果您没有具体的原因来编写自​​己的REST方法,则应该查看http://square.github.io/okhttp/

您需要检索的代码位于网站上:

    OkHttpClient client = new OkHttpClient();

    String run(String url) throws IOException {
         Request request = new Request.Builder()
         .url(url)
         .build();

         Response response = client.newCall(request).execute();
         return response.body().string();
    }