http://www.elven.ee/ip/に行くと、ipが表示されます。リフレッシュすると、別のポートが表示されます。インターネットからの文章を取得する
どうすればそのIPをアンドロイドに取得できますか?私は5秒ごとに更新する方法も知らないけど、今は自分の携帯電話にどうやって取得できるのか知りたい。私はTextViewとしてそれを表示したい:)。
http://www.elven.ee/ip/に行くと、ipが表示されます。リフレッシュすると、別のポートが表示されます。インターネットからの文章を取得する
どうすればそのIPをアンドロイドに取得できますか?私は5秒ごとに更新する方法も知らないけど、今は自分の携帯電話にどうやって取得できるのか知りたい。私はTextViewとしてそれを表示したい:)。
@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();
}
}
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();
私はいつも同じIP **です。それぞれの呼び出しで ';'の後の数字だけが変更されますが、** IP **(おそらくポート番号ですか?)の一部ではありません。 –
ああ、そうです。私の間違い。今私はちょうどループを行うことができる地獄を見つける必要があります。 – Elven