yakamoz 2005
yakamoz 2005

Reputation: 21

Reading file from url

I would like to get content of an Internet txt file. When I open it with emulator I get this message

"Unfortunately application has stopped".

Nothing happens if remove "http://" but it doesnt read anything and becomes null. What's wrong? How can read the url above? I have added permission.

This is the whole code i changed but still get same error. what mistake i do? http://dforum.zxq.net/code.txt

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 new AsyncTask<Void, Void, Void>() {

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



            try {
                URL url = new URL("http://dforum.zxq.net/myfile.txt");

                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                String str;
                while ((str = in.readLine()) != null) {
                    Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();      
                    // str is one line of text; readLine() strips the newline character(s)
                }
                in.close();
            } catch (MalformedURLException e) {
            } catch (IOException e) {
            }




            return null;
            // TODO Auto-generated method stub

        }


     }.execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

Upvotes: 2

Views: 471

Answers (2)

Johnathan Au
Johnathan Au

Reputation: 5362

Make sure you taking this process off the main UI thread by running it inside an AsyncTask. Check out this tutorial: http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/. More specifically, check out the JSONParser class in there.

UPDATE

You are calling Toast in a while loop, which I think is the reason it's crashing. Replace it with Log.d() or System.out.println()

Upvotes: 0

rekire
rekire

Reputation: 47985

Make sure that you don't do that on the UI thread and also check that you have the internet permission.

Both cases can cause an exception which let your app crash.

Here is an example about how to prevent doing network operations on the GUI thread:

new AsyncTask<Void, Void, Void>{
    @Override
    protected Void doInBackground(Void... params) {

        // add your try catch block here.

        return null;
    }
}.execute();

Upvotes: 1

Related Questions