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 片段中获取 Java.Lang.NullPointerException
在 Fragments 中使用 JSON 时,应用在 Android 开发中没有响应