2013-07-16 6 views
0

Я пытаюсь получить данные json с URL-адреса. Мои данные выглядят так:Не удается получить данные json из url в android

[{"Food1":"Fried Chicken","Food2":"Spagetti","Food3":"Watermelon"}] 

Я искал его и почти пробовал каждый код, который мог найти. Но они не работали для меня. Когда я даю json-данные вручную, я могу легко разобрать его, реальной проблемой является получение данных из url с помощью HttpClient или Httpurlconnection. Я также пытался использовать AsyncTask, но я не мог сделать это правильно, я думаю. Что мне делать ?

Logcat: https://dl.dropboxusercontent.com/u/108584907/logcat.txt

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 

public class yemekhane extends Activity { 

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.yemekhane); 

    TextView tv = (TextView) findViewById(R.id.TextView01); 


    JSONArray jArray = null; 
    String result = ""; 
    StringBuilder sb = null; 
    InputStream is = null; 

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

    try{ 
     HttpClient httpclient = new DefaultHttpClient(); 

     //Why to use 10.0.2.2 
     HttpPost httppost = new HttpPost("http://example.com"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection"+e.toString()); 
     } 


    //convert response to string 
    try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      sb = new StringBuilder(); 
      sb.append(reader.readLine() + "\n"); 

      String line="0"; 
      while ((line = reader.readLine()) != null) { 
          sb.append(line + "\n"); 
      } 
      is.close(); 
      result=sb.toString(); 


      }catch(Exception e){ 
        Log.e("log_tag", "Error converting result "+e.toString()); 
      } 


    String name = ""; 

      try { 
      jArray = new JSONArray(result); 
       JSONObject json_data=null; 
       for(int i=0;i<jArray.length();i++){ 
        json_data = jArray.getJSONObject(i); 
        name=json_data.getString("Food1"); 
       } 
     } catch (JSONException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
      tv.setText("test " + name); 


    } 


}` 
+0

любезно вывесить LogCat плз – KOTIOS

+0

Post некоторый код относительно того, что вы сделали. Простое размещение JSON здесь не поможет. – rockstar

+0

Вы уверены, что ответ, который вы получаете, это то, что вы думаете? попробуйте распечатать его перед разбором. – Steelight

ответ

0

Спасибо за ваши советы, я, наконец, нашел свой ответ. Сначала я изменил minsdkversion на 9 в файле манифеста Android Manifest. Затем я добавил этот бит кода ниже:

StrictMode.ThreadPolicy policy = new StrictMode. 
ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy); 

Он работал для меня, надеюсь, что он работает для кого-то тоже :)