Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从MySql获取JSON数据_Android_Mysql_Xml_Database_Json - Fatal编程技术网

Android 从MySql获取JSON数据

Android 从MySql获取JSON数据,android,mysql,xml,database,json,Android,Mysql,Xml,Database,Json,我使用JSON创建了一个数据库和php文件: = Connection Established - Database selected [{"latitude":"43222121","longitude":"2112212","description":"O masina rosie cu farurile stinse."},{"latitude":"33211322","longitude":"3211313","description":null}] 我使用的XML只有一个TextV

我使用JSON创建了一个数据库和php文件:

= Connection Established - Database selected 
[{"latitude":"43222121","longitude":"2112212","description":"O masina rosie cu farurile stinse."},{"latitude":"33211322","longitude":"3211313","description":null}]
我使用的XML只有一个
TextView
。 下面是课堂:

public class ConnectMySql extends Activity {

 TextView httpStuff;
 HttpClient client;
 JSONObject json;
 final static String URL = "http://79.114.48.119/RadarsMySql.php";

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    httpStuff = (TextView) findViewById(R.id.tvHttp);
    client = new DefaultHttpClient();
    new Read().execute("latitude");
}


public JSONObject lastTweet(String username) throws ClientProtocolException, IOException,JSONException{
    StringBuilder url = new StringBuilder(URL);
    url.append(username);

    HttpGet get = new HttpGet(url.toString());
    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();
    //if(status == 200){
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);
        JSONArray timeline = new JSONArray(data);
        JSONObject last = timeline.getJSONObject(0);
        return last;

    //}else{ 
        //Toast.makeText(ConnectMySql.this, "error", Toast.LENGTH_LONG);
        //return null;

    //}
}

public class Read extends AsyncTask<String, Integer, String>{

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        try {
            json = lastTweet("");
            return json.getString(params[0]);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        httpStuff.setText(result);
    }

}

}
公共类ConnectMySql扩展活动{
TextView-httpStuff;
HttpClient;
JSONObject json;
最终静态字符串URL=”http://79.114.48.119/RadarsMySql.php";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
httpStuff=(TextView)findviewbyd(R.id.tvHttp);
client=新的DefaultHttpClient();
新建Read()。执行(“纬度”);
}
公共JSONObject lastTweet(字符串用户名)抛出ClientProtocolException、IOException、JSONException{
StringBuilder url=新的StringBuilder(url);
url.append(用户名);
HttpGet=newhttpget(url.toString());
HttpResponse r=client.execute(get);
int status=r.getStatusLine().getStatusCode();
//如果(状态==200){
HttpEntity e=r.getEntity();
字符串数据=EntityUtils.toString(e);
JSONArray时间线=新JSONArray(数据);
JSONObject last=timeline.getJSONObject(0);
最后返回;
//}否则{
//Toast.makeText(ConnectMySql.this,“error”,Toast.LENGTH\u LONG);
//返回null;
//}
}
公共类读取扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
试一试{
json=lastTweet(“”);
返回json.getString(参数[0]);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
httpStuff.setText(结果);
}
}
}
我遵循了一个从推特上获取数据的教程,它是有效的,但从我的网站上却没有

有谁能给我一些有用的建议,或者更好的,告诉我我做错了什么

这是我放好日志后的日志。i-东西:

05-05 19:44:07.109: W/System.err(717): org.json.JSONException: Expected literal value at character 0 of =

05-05 19:44:07.109: W/System.err(717):      

05-05 19:44:07.109: W/System.err(717):    Connection Established - Database selected[{"latitude":"43222121","longitude":"2112212","description":"O masina rosie cu farurile stinse."},{"latitude":"33211322","longitude":"3211313","description":null}]
05-05 19:44:07.109: W/System.err(717):  at org.json.JSONTokener.syntaxError(JSONTokener.java:446)
05-05 19:44:07.109: W/System.err(717):  at org.json.JSONTokener.readLiteral(JSONTokener.java:281)
05-05 19:44:07.109: W/System.err(717):  at org.json.JSONTokener.nextValue(JSONTokener.java:107)
05-05 19:44:07.109: W/System.err(717):  at org.json.JSONArray.<init>(JSONArray.java:87)
05-05 19:44:07.109: W/System.err(717):  at org.json.JSONArray.<init>(JSONArray.java:103)
05-05 19:44:07.109: W/System.err(717):  at com.project.radars.ConnectMySql.lastTweet(ConnectMySql.java:53)
05-05 19:44:07.119: W/System.err(717):  at com.project.radars.ConnectMySql$Read.doInBackground(ConnectMySql.java:71)
05-05 19:44:07.130: W/System.err(717):  at com.project.radars.ConnectMySql$Read.doInBackground(ConnectMySql.java:1)
05-05 19:44:07.130: W/System.err(717):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
05-05 19:44:07.130: W/System.err(717):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-05 19:44:07.130: W/System.err(717):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-05 19:44:07.130: W/System.err(717):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
05-05 19:44:07.130: W/System.err(717):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
05-05 19:44:07.130: W/System.err(717):  at java.lang.Thread.run(Thread.java:1096)
05-05 19:44:07.109:W/System.err(717):org.json.JSONException:字符0处的预期文字值=
05-0519:44:07.109:W/系统错误(717):
05-05 19:44:07.109:W/System.err(717):建立连接-选择数据库[{“纬度”:“43222121”,“经度”:“2112212”,“描述”:“O masina rosie cu farurile stinse.”},{“纬度”:“33211322”,“经度”:“3211313”,“描述”:null}]
05-05 19:44:07.109:W/System.err(717):位于org.json.JSONTokener.syntaxError(JSONTokener.java:446)
05-05 19:44:07.109:W/System.err(717):位于org.json.JSONTokener.readLiteral(JSONTokener.java:281)
05-05 19:44:07.109:W/System.err(717):位于org.json.JSONTokener.nextValue(JSONTokener.java:107)
05-0519:44:07.109:W/System.err(717):位于org.json.JSONArray(JSONArray.java:87)
05-0519:44:07.109:W/System.err(717):位于org.json.JSONArray(JSONArray.java:103)
05-05 19:44:07.109:W/System.err(717):位于com.project.radars.ConnectMySql.lastweet(ConnectMySql.java:53)
05-05 19:44:07.119:W/System.err(717):位于com.project.radars.ConnectMySql$Read.doInBackground(ConnectMySql.java:71)
05-05 19:44:07.130:W/System.err(717):位于com.project.radars.ConnectMySql$Read.doInBackground(ConnectMySql.java:1)
05-05 19:44:07.130:W/System.err(717):在android.os.AsyncTask$2.call(AsyncTask.java:185)
05-05 19:44:07.130:W/System.err(717):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-05 19:44:07.130:W/System.err(717):在java.util.concurrent.FutureTask.run(FutureTask.java:137)处
05-05 19:44:07.130:W/System.err(717):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
05-05 19:44:07.130:W/System.err(717):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
05-0519:44:07.130:W/System.err(717):在java.lang.Thread.run(Thread.java:1096)处

您的问题来了:我已连接到您的网站,并收到以下字符串:

= Connection Established - Database selected[{"latitude":"43222121","longitude":"2112212","description":"O masina rosie cu farurile stinse."},{"latitude":"33211322","longitude":"3211313","description":null}]
但是,您试图将其加载到
JSONArray
,这当然会失败,因为
=Connection-builded-Database-selected
前缀不是任何合法的json数组的一部分

在解析数组之前,需要截断此前缀。最好的选择是从php代码中删除前缀(我很确定您是为了登录而手动添加前缀)。但是,如果这对您来说很困难,您可以在java端进行。在解析json数组之前添加以下行:

String data = EntityUtils.toString(e);
data = data.substring(data.indexOf("["));

不工作是不够的。说出错误:有错误吗?你收到了意想不到的结果吗?还有什么吗?它不会在TextView中返回任何内容,也不会,我没有收到任何错误。这对我们来说仍然是太多的猜测。记录您收到的json数组,以便我们可以限制问题的原因。我把所有项目都放在这个主题中,我不明白您的要求。
JSONArray timeline=new JSONArray(data)我想查看此对象的内容。Do
Log.i(“TAG”,timeline.toString())
并告诉我们日志中打印的内容作为数组的内容。“类型字符串的方法firstIndexOf未定义”。我只能使用indexOf或lastIndexOf,我该怎么办?顺便说一句:我删除了这两个回音,现在webiste开始如下:=[…]。@stangabogdan在你发表评论时,我已经更正了我的答案
indexOf
是您需要的索引。如果您更正了php返回,请也删除数组前面的
=
符号(这样您就不需要子字符串了)。@stangabogdan我对v表示抱歉