i'm new in Android programming. I want to read data out of a simple json. I have checked dozen of threads with answers which worked for some people. But i'm always getting a fatal error. can someone help? The JSON is from twitter.
code:
public class MainActivity extends Activity {
/** Called when the activity is first created. */
InputStream inputStream = null;
String result = "";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
this.connectToService(url);
}
public JSONObject connectToService(String url) {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpParams httpParameters = httpGet.getParams();
// Set the timeout in milliseconds until a connection is established.
int timeoutConnection = 7500;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 7500;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
String jsonString = sb.toString();
Log.e("WetterTAR", "JSON string returned is"+jsonString.toString());
JSONObject jsonObject = new JSONObject(jsonString);
return jsonObject;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (SocketTimeoutException e) {
e.printStackTrace();
} catch (ConnectTimeoutException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}
and here the error message:
01-15 09:42:47.609: D/AndroidRuntime(3095): Shutting down VM
01-15 09:42:47.613: W/dalvikvm(3095): threadid=1: thread exiting with uncaught exception (group=0xa4ba8648)
01-15 09:42:47.637: E/AndroidRuntime(3095): FATAL EXCEPTION: main
01-15 09:42:47.637: E/AndroidRuntime(3095): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.wettertar/com.example.wettertar.MainActivity}: android.os.NetworkOnMainThreadException
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.os.Handler.dispatchMessage(Handler.java:99)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.os.Looper.loop(Looper.java:137)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.ActivityThread.main(ActivityThread.java:5103)
01-15 09:42:47.637: E/AndroidRuntime(3095): at java.lang.reflect.Method.invokeNative(Native Method)
01-15 09:42:47.637: E/AndroidRuntime(3095): at java.lang.reflect.Method.invoke(Method.java:525)
01-15 09:42:47.637: E/AndroidRuntime(3095): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-15 09:42:47.637: E/AndroidRuntime(3095): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-15 09:42:47.637: E/AndroidRuntime(3095): at dalvik.system.NativeStart.main(Native Method)
01-15 09:42:47.637: E/AndroidRuntime(3095): Caused by: android.os.NetworkOnMainThreadException
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
01-15 09:42:47.637: E/AndroidRuntime(3095): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
01-15 09:42:47.637: E/AndroidRuntime(3095): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
01-15 09:42:47.637: E/AndroidRuntime(3095): at java.net.InetAddress.getAllByName(InetAddress.java:214)
01-15 09:42:47.637: E/AndroidRuntime(3095): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
01-15 09:42:47.637: E/AndroidRuntime(3095): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
01-15 09:42:47.637: E/AndroidRuntime(3095): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
01-15 09:42:47.637: E/AndroidRuntime(3095): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
01-15 09:42:47.637: E/AndroidRuntime(3095): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
01-15 09:42:47.637: E/AndroidRuntime(3095): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
01-15 09:42:47.637: E/AndroidRuntime(3095): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
01-15 09:42:47.637: E/AndroidRuntime(3095): at com.example.wettertar.MainActivity.connectToService(MainActivity.java:56)
01-15 09:42:47.637: E/AndroidRuntime(3095): at com.example.wettertar.MainActivity.onCreate(MainActivity.java:37)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.Activity.performCreate(Activity.java:5133)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-15 09:42:47.637: E/AndroidRuntime(3095): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
01-15 09:42:47.637: E/AndroidRuntime(3095): ... 11 more
It should log something, but the programm doesnt even start.