2011-08-10 3 views
0

http://www.elven.ee/ip/に行くと、ipが表示されます。リフレッシュすると、別のポートが表示されます。インターネットからの文章を取得する

どうすればそのIPをアンドロイドに取得できますか?私は5秒ごとに更新する方法も知らないけど、今は自分の携帯電話にどうやって取得できるのか知りたい。私はTextViewとしてそれを表示したい:)。

+0

私はいつも同じIP **です。それぞれの呼び出しで ';'の後の数字だけが変更されますが、** IP **(おそらくポート番号ですか?)の一部ではありません。 –

+0

ああ、そうです。私の間違い。今私はちょうどループを行うことができる地獄を見つける必要があります。 – Elven

答えて

1

@mopsledソリューションはので、ここで鉱山があり、私のために動作しませんでした:

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(); 
} 
} 
+0

あなたのマニフェストファイルに ''を追加することを忘れないでください。 –

+0

まさに私がやっていたこと:D – Elven

+0

ああ、それは働いた!どうもありがとうございました :)!私は今それを正しく理解するためにそれを正しく検査する必要があります:D! – Elven

0

EDIT:固定コード

HTTPURLConnection(例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(); 
+0

それはエラーを出しますUnhandled例外のタイプMalformedURLExceptionとIOException:/ – Elven

+0

@Elvenあなたはすでに正解を選択していますが、それで今は正常に動作しているはずです。 – mopsled

+0

Ok、thanks :)。私もそれを試してみます。私もそれを試して勉強することができます! – Elven

関連する問題