json编码在android中获取错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json编码在android中获取错误相关的知识,希望对你有一定的参考价值。

我有一个页面,用php回应一些json:

http://exception-piano.gigfa.com/json.php

我想在android Studio中解码这个,我的应用程序适用于其他json页面,但是当我使用这个特定页面时,我收到此错误:

此网站需要使用javascript工作,请在您的浏览器中启用Javascript或使用支持Javascript的浏览器。

这是我的json编码:

<?php 

$servername = "xxx";
$username = "yyy";
$password = "zzz";
$dbname = "gigfa_18832988_tamrin";

    $con = mysqli_connect($servername,$username,$password,$dbname);      
    $sql = "SELECT * FROM t;";

    $result = mysqli_query($con,$sql);

    $response=array();
    while($row=mysqli_fetch_array($result))
    {
        array_push($response,array("Week"=>$row[0],"Exercise"=>$row[1]));
    }

    echo json_encode(array("server_response"=>$response));        
    mysqli_close($con);        
    ?>

这是我的android代码:

public class MainActivity extends AppCompatActivity {

    String name;
    String id;
    String word;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public  void get (View view){
        DownloadTask task = new DownloadTask();
        task.execute("http://exception-piano.gigfa.com/json.php");
    }

    public class DownloadTask extends AsyncTask<String, Void, String> {
        TextView TEXTVIEW = (TextView) findViewById(R.id.textView);
        TextView TEXTVIEW2 = (TextView) findViewById(R.id.textView2);
        //TextView TEXTVIEW3 = (TextView) findViewById(R.id.textView3);
        //ListView LISTVIEW = (ListView) findViewById(R.id.listView);

        @Override
        protected String doInBackground(String... urls) {

            String result = "";
            URL url;
            HttpURLConnection urlConnection = null;

            try {
                url = new URL(urls[0]);    
                urlConnection = (HttpURLConnection) url.openConnection();

                InputStream in = urlConnection.getInputStream();    
                InputStreamReader reader = new InputStreamReader(in);

                int data = reader.read();

                while (data != -1) {    
                    char current = (char) data;    
                    result += current;    
                    data = reader.read();    
                }

                return result;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            try {   
                JSONObject note = new JSONObject(result);
                String noteString = note.getString("server_response");
                JSONArray arr = new JSONArray(noteString);

                //for loop for puting on jsonObject

                for (int i = 0; i < arr.length(); i++) {

                    JSONObject jsonPart = arr.getJSONObject(i);

                    //Put on variables
                    Week = jsonPart.getString("Week");
                    Exercise = jsonPart.getString("Exercise");   

                    //Print on TextView
                    TEXTVIEW.setText("Week : " + Week);
                    TEXTVIEW2.setText("Exercise : " + Exercise);    
                }   

            } catch (JSONException e) {
                e.printStackTrace();
            }    
        }
    }
}
答案

它可能是字符,在服务器上输出json之前尝试清理它:

ob_clean();
retur/echo....json
另一答案

试试这个

JSONObject note = new JSONObject(result);
JSONArray arr = note.getJSONArray("server_response");
另一答案

好的,我发现问题出在我的主人身上。它是一个免费的东道主,显然,他们不允许在他们的政策中。我改变了主机,一切都很好。

以上是关于json编码在android中获取错误的主要内容,如果未能解决你的问题,请参考以下文章

Android在活动视图中附加片段获取片段已添加错误

如何从片段中的 JSON 响应中的对象获取数据

在 Android 片段中获取 Java.Lang.NullPointerException

在 Fragments 中使用 JSON 时,应用在 Android 开发中没有响应

Android 从片段中检索 Json 并在另一个活动中使用

如何在android中将json数据加载到片段中