Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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-HttpResponse及其后的代码don';跑不动_Android_Json - Fatal编程技术网

Android-HttpResponse及其后的代码don';跑不动

Android-HttpResponse及其后的代码don';跑不动,android,json,Android,Json,我的问题是:在我的代码中,我试图从HTTP客户端获取JSON对象并在LogCat中打印它们。但是什么也没有发生。所以为了测试,我添加了日志(“sdf”,“1”)行。现在我可以看到在日志(“sdf”,“2”)行之后,没有代码运行。没有错误,没有例外,也没有类似的事情。我已经添加了Internet权限。我是否遗漏了什么,或者我的Eclipse有什么问题?谢谢你的帮助 public class MainActivity extends Activity { @Override protected v

我的问题是:在我的代码中,我试图从HTTP客户端获取JSON对象并在LogCat中打印它们。但是什么也没有发生。所以为了测试,我添加了日志(“sdf”,“1”)行。现在我可以看到在日志(“sdf”,“2”)行之后,没有代码运行。没有错误,没有例外,也没有类似的事情。我已经添加了Internet权限。我是否遗漏了什么,或者我的Eclipse有什么问题?谢谢你的帮助

public class MainActivity extends Activity {

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

    DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
    HttpGet httpget = new HttpGet("http://tusyad2014.org/akb_api/hastalarimiza_ozel.json");
    httpget.setHeader("Content-type", "application/json;charset=utf-8");

    Log.e("sdf","1");
    try {
        Log.e("sdf","2");
        HttpResponse response = httpclient.execute(httpget);
        Log.e("sdf","3");
        String result = EntityUtils.toString(response.getEntity(), "UTF-8");
        Log.e("sdf","4");
        JSONArray ja = new JSONArray(result);

        Log.e("sdf","5");

        int n = ja.length();

        for (int i = 0; i < n; i++) {

          JSONObject jo = ja.getJSONObject(i);

          Log.d("sdf","Json : " + jo.getString("id") + " - "+ jo.getString("name"));

        }

    } catch (Exception e) {

      Log.e("sdf","");
    }      
}   
}

您正在ui线程上运行与网络相关的操作,这是不可能的。使用
线程
异步任务

发布蜂巢后,您将获得
NetworkOnMainThreadException

这仅适用于针对蜂巢SDK或 较高的。允许针对早期SDK版本的应用程序执行以下操作 在他们的主事件循环线程上建立网络,但它非常复杂 气馁。有关响应性,请参阅文档设计

异步任务文档

编辑

然后


问题可能是您的网络速度太慢。。。。。。需要一段时间才能在慢速连接中获得响应


此外,在新的android API中可能会出现例外,因为您正在主线程上执行网络相关工作,Raghunandan建议您需要使用
Asynctask
或后台线程来执行此操作

例如:

    new AsyncTask<Void, Void, Void>() {


    @Override
    protected void onPreExecute() {
                        // TODO Auto-generated method stub
                        super.onPreExecute();
    Log.i("onPreExecute","onPreExecute");
                    }


@Override
protected Void doInBackground(Void... params) {

DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
    HttpGet httpget = new HttpGet("http://tusyad2014.org/akb_api/hastalarimiza_ozel.json");
    httpget.setHeader("Content-type", "application/json;charset=utf-8");

    Log.e("sdf","1");
    try {
        Log.e("sdf","2");
        HttpResponse response = httpclient.execute(httpget);
        Log.e("sdf","3");
        String result = EntityUtils.toString(response.getEntity(), "UTF-8");
        Log.e("sdf","4");
        JSONArray ja = new JSONArray(result);

        Log.e("sdf","5");

        int n = ja.length();

        for (int i = 0; i < n; i++) {

          JSONObject jo = ja.getJSONObject(i);

          Log.d("sdf","Json : " + jo.getString("id") + " - "+ jo.getString("name"));

        }

    } catch (Exception e) {

      Log.e("sdf","");
    }      


}       
    }.execute();
newasynctask(){
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
Log.i(“onPreExecute”、“onPreExecute”);
}
@凌驾
受保护的Void doInBackground(Void…参数){
DefaultHttpClient httpclient=新的DefaultHttpClient(新的BasicHttpParams());
HttpGet HttpGet=新的HttpGet(“http://tusyad2014.org/akb_api/hastalarimiza_ozel.json");
setHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
Log.e(“sdf”,“1”);
试一试{
Log.e(“sdf”,“2”);
HttpResponse response=httpclient.execute(httpget);
Log.e(“sdf”、“3”);
字符串结果=EntityUtils.toString(response.getEntity(),“UTF-8”);
Log.e(“sdf”,“4”);
JSONArray ja=新JSONArray(结果);
Log.e(“sdf”、“5”);
int n=ja.length();
对于(int i=0;i
编辑:


另请参见。

您不应该在主线程上发出HTTP请求,而应该使用单独的线程(例如AsyncTask)。您应该在后台使用thread或AsyncTask来执行此操作。我首先使用了Runnable。没有变化。错了吗?你应该使用Handler的线程。1.5 yıl sonra gelen edit için teşekkürler amın oğlu。我有19.54Mbit的互联网速度和不到1ms的ping。你的网络服务呢。。。。我记得当我在一个有3000多个json条目的Web服务上做这件事时,花了一段时间…只有很少的条目。少于20尝试使用异步任务或后台线程。。。最终,你必须使用它后,蜂蜜梳子如上所述…是的。使用async完成。我将添加LogCat输出。我知道在这种情况下,我应该得到NetworkOnMainThreadException,但不是;我不知道。@ArdaOğulÜçpınar更新代码。我查过了,我确实得到了jsonnow@ArdaOğulÜçpınar欢迎你,兄弟。很高兴为您服务。
 new TheTask().execute();
public void  getJson()
  {
        HttpClient httpclient = new DefaultHttpClient();
        httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
        HttpGet request = new HttpGet("http://tusyad2014.org/akb_api/hastalarimiza_ozel.json");     
        try
        {
        HttpResponse response = httpclient.execute(request);
        HttpEntity resEntity = response.getEntity();
        String _response=EntityUtils.toString(resEntity);
        Log.e("sdf",_response);

        } catch (Exception e) {

          Log.e("sdf","");
        }      
    }   
    class TheTask extends AsyncTask <String,Void,Void>
  { 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected void onPostExecute(Void result) {

    super.onPostExecute(result);

    }
    @Override
    protected Void doInBackground(String... params) {
        getJson();
        return null;
    }
    }   
  }
08-15 15:05:26.745: E/sdf(21197): [{"id":"1","name":"Ayakta Åekil BozukluÄu- Kemik Ãıkıntısı- Halluks Valgus - Halluks Rijitus"},{"id":"2","name":"Ãekiç Parmak"},{"id":"3","name":"DoÄumsal El, Ayak, Ãst Ekstremite Anamolileri, Eksiklikleri, Åekil Bozuklukları"},{"id":"4","name":"DoÄum Felci- DoÄum sonrası Beyin Felci, Spastisite"},{"id":"5","name":"Kapalı omuz, dirsek, el bileÄi ameliyatları- ARTROSKOPÄ°K cerrahi giriÅimler"},{"id":"6","name":"Ortopedi de PRP ( trombositten zengin plazma) uygulamaları"},{"id":"7","name":"Kırık kaynama gecikmesi, kaynamamaları ve ultrason tedavisi"},{"id":"8","name":"El bileÄi kırıkları, radius ve ulna alt uç kırıkları, skafoid kırıkları"},{"id":"9","name":"Humerus kırıkları, radial sinir sorunları, kaynamamaları"},{"id":"10","name":"Eldeki kistler,Ganglion kistleri"},{"id":"11","name":"Dirsek aÄrısı,Tenisçi dirseÄi, Golfçü dirseÄi"},{"id":"12","name":"Elde uyuÅma, karıncalanma, iÄnelenme, aÄrı"},{"id":"13","name":"Pleksus ve sinir yaralanmaları"},{"id":"14","name":"Ãnkol Kemik (Radius ve Ulna) Kaynamamaları"},{"id":"15","name":"Femur BaÅı Avasküler Nekrozu"},{"id":"16","name":"Tetik Parmak"},{"id":"17","name":"BaÅparmak Tendonlarının SıkıÅması (De Quervain HastalıÄı)"},{"id":"18","name":"Omuz AÄrısı ve Hareket KısıtlılıÄı"},{"id":"19","name":"DoÄumsal Tibia Kaynamaması (Konjenital Tibia Psödoartrozu)"}]
    new AsyncTask<Void, Void, Void>() {


    @Override
    protected void onPreExecute() {
                        // TODO Auto-generated method stub
                        super.onPreExecute();
    Log.i("onPreExecute","onPreExecute");
                    }


@Override
protected Void doInBackground(Void... params) {

DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
    HttpGet httpget = new HttpGet("http://tusyad2014.org/akb_api/hastalarimiza_ozel.json");
    httpget.setHeader("Content-type", "application/json;charset=utf-8");

    Log.e("sdf","1");
    try {
        Log.e("sdf","2");
        HttpResponse response = httpclient.execute(httpget);
        Log.e("sdf","3");
        String result = EntityUtils.toString(response.getEntity(), "UTF-8");
        Log.e("sdf","4");
        JSONArray ja = new JSONArray(result);

        Log.e("sdf","5");

        int n = ja.length();

        for (int i = 0; i < n; i++) {

          JSONObject jo = ja.getJSONObject(i);

          Log.d("sdf","Json : " + jo.getString("id") + " - "+ jo.getString("name"));

        }

    } catch (Exception e) {

      Log.e("sdf","");
    }      


}       
    }.execute();