대부분은 외부 라이브러리를 사용하는 방법인데, 그만큼 기본으로 제공하는 기능이 많이 빈약하기 때문.
하지만, 가급적이면 외부 라이브러리 없이 구현.
일단 기본 틀은 이전에 작업했던 폼을 사용.
리스트 뷰 사용 : http://son10001.blogspot.kr/2016/05/android-studio-listview.html
여기다 버튼을 하나 추가해서 기능을 구현해 본다.
버튼을 하나 추가해 놓고...
메인 액티비티에 클릭 이벤트 등록해 놓고...
클릭 이벤트 리스너와 웹 페이지 조회 루틴 작성.
package com.son10001.formbasic;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
public class BasicActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
String[] names = {"Item01", "Item02", "Item03", "Item04", "Item05"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
// 클릭이벤트
findViewById(R.id.btnGetWeb).setOnClickListener(mClickListener);
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View v) {
try {
new HttpUtil().execute();
} catch (Exception e) {
e.printStackTrace();
}
}
};
private URL Url;
private String strUrl,strCookie,result;
public class HttpUtil extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
strUrl = "http://192.168.0.181:916/gettest.aspx";
}
@Override
protected Void doInBackground(Void... voids) {
try{
Url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection) Url.openConnection();
conn.setRequestMethod("GET"); // get방식 통신
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setDefaultUseCaches(false);
strCookie = conn.getHeaderField("Set-Cookie");
InputStream is = conn.getInputStream();
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line+ "\n");
}
result = builder.toString();
}catch(MalformedURLException | ProtocolException exception) {
exception.printStackTrace();
}catch(IOException io){
io.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
System.out.println(result);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_basic, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
여기까지 작성되었으면...
AndroidManifest.xml 에 인터넷 접속 가능 속성 지정.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
이제 실행을 해보면...
이렇게 버튼을 클릭 할때 마다 지정한 웹 페이지의 내용을 로그로 출력해 준다.




