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