パーミッション設定
インターネット接続する場合、AndroidManifest.xmlにパーミッション設定を書く必要がある。
<uses-permission android:name="android.permission.INTERNET"/>
インターネット接続をActivityのonCreateとかで使うとエラーになる。UIスレッドで使ってはいけない。別のスレッドで使う。AsyncTaskのdoInBackgroundとかでやる。
http通信してみる
MainActivity.java
public class MainActivity extends AppCompatActivity { private MyTask task; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); task = new MyTask(); task.execute(); } }
MyTask.java
public class MyTask extends AsyncTask<Integer, Integer, Integer> { static final String host = "google.com"; static final String path = "/"; @Override protected Integer doInBackground(Integer...x) { try { Socket socket = new Socket(); socket.connect(new InetSocketAddress(host, 80)); String request = "GET " + path + " HTTP/1.1\n" + "Host: " + host + "\n" + "\n\n"; OutputStream out = socket.getOutputStream(); out.write(request.getBytes()); out.flush(); InputStream in = socket.getInputStream(); byte[] buffer = new byte[1024]; int length; while((length = in.read(buffer)) != -1) { Log.d("TEST", new String(buffer, 0, length)); } out.close(); in.close(); } catch (Exception e) { throw new RuntimeException(e); } return 1; } }