Krystian Solarz Student, WSIZ
Temat: Problem z pobieraniem danych JSON
Witam, buduję sobie szkoleniowo aplikacje i w pewnym momencie potrzebuję pobrać dane z bazy danych, pobrałem je za pomocą pliku php na strone, tam wygenerowałem format JSON i czytam go sobie normalnie przez aplikacje. Problem polega na tym, że aplikacja działa tylko i wyłączenie na emulatorze, a na urządzeniu fizycznym już aplikacja jest zatrzymana. Bardzo bym prosił o jakąś podpowiedz bo szczerze powiedziawszy brak pomysłów.przykladowy kod ze stronki
{ "user": [ { "id": "1", "name": "Anna", "email": "bezraczek@com" } ] }
i kod
package pl.przyklad.jsontest;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity {
private static String url = "http://costamcost/JSON/";
private static final String TAG_USER = "user";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "email";
private static final String TAG_EMAIL = "name";
JSONArray user = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
JsonParser jparser = new JsonParser();
JSONObject jo = jparser.getJSONFromUrl(url);
try{
user = jo.getJSONArray(TAG_USER);
JSONObject d = user.getJSONObject(0);
String id2 = d.getString(TAG_ID);
String name2 = d.getString(TAG_NAME);
String email2 = d.getString(TAG_EMAIL);
final TextView tvId2 = (TextView)findViewById(R.id.tv_id_id2);
final TextView tvName2 = (TextView)findViewById(R.id.tv_imie_id2);
final TextView tvEmail2 = (TextView)findViewById(R.id.tv_nazwisko_id2);
tvId2.setText(id2);
tvName2.setText(name2);
tvEmail2.setText(email2);
}catch(JSONException e){
e.printStackTrace();
}
}
}
i jeszcze JsonParser
package pl.przyklad.jsontest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONObject;
import android.util.Log;
public class JsonParser {
static InputStream is = null;
static JSONObject jsono = null;
static String json = "";
public JsonParser(){}
public JSONObject getJSONFromUrl(String url){
try{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}catch(UnsupportedEncodingException e ){
e.printStackTrace();
}catch(ClientProtocolException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
try{
BufferedReader br = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while((line = br.readLine()) != null){
sb.append(line + "\n");
}
is.close();
json = sb.toString();
}catch(Exception e){
Log.e("Buffer Error", "Error Converting Result" + e.toString());
}
try{
jsono = new JSONObject(json);
}catch(Exception e){
Log.e("JSON Parser","Error Parsing Data" + e.toString());
}
return jsono;
}
}
Byłbym bardzo wdzięczny za jakąś podpowiedz bo zaczynam błądzić i chyba w złym kierunku idę.