简体   繁体   中英

Getting text from internet

If you go to http://www.elven.ee/ip/ - you can see it gives ip. If you refresh, it gives different port.

How can I get that IP into android? I don't know how to make it also update after like every 5 seconds, but right now I want to know how can i get it into my phone. I want to display it as TextView:).

@mopsled solution did not work for me, so here is mine:

public class TestActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView tv = (TextView) findViewById(R.id.textView1);
    String ip = "";
    final DefaultHttpClient httpClient = new DefaultHttpClient();
    final HttpGet httpGet = new HttpGet("http://www.elven.ee/ip/");
    try {
        final HttpResponse response = httpClient.execute(httpGet);
        if (response.getStatusLine().getStatusCode() == 200) {
            ip = getString(response);
        }
    } catch (final ClientProtocolException e) {
        e.printStackTrace();
    } catch (final IOException e) {
        e.printStackTrace();
    }
    tv.setText(ip);
}

private static String getString(HttpResponse response) {
    final HttpEntity retEntity = response.getEntity();
    if (retEntity != null) {
        InputStream instream = null;
        try {
            instream = retEntity.getContent();
        } catch (final IllegalStateException ise) {
            ise.printStackTrace();
        } catch (final IOException ioe) {
            ioe.printStackTrace();
        }
        final String result = convertStreamToString(instream);
        return result;
    } else {
        return "";
    }
}

private static String convertStreamToString(final InputStream is) {
    final BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    final StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (final IOException ioe) {
        ioe.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (final IOException ioe) {
            ioe.printStackTrace();
        }
    }
    return sb.toString().trim();
}
}

EDIT : Fixed code

Try a HTTPURLConnection (a simplified version of an example found here ):

StringBuilder content = new StringBuilder();

try {
    URL url = new URL("http://www.elven.ee/ip/");
    URLConnection urlConnection = url.openConnection();
    BufferedReader bufferedReader = 
        new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

    String line;
    while ((line = bufferedReader.readLine()) != null) {
        content.append(line + "\n");
    }

    bufferedReader.close();
} catch(Exception e) {
    e.printStackTrace();
}

String myIp = content.toString();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM