용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요. 강원도 홍천 서석면에 위치해있으며 1급수 용오름계곡 바로 옆에 있습니다.홍천군 1등 마을로 마을에서 직접 관리하는 용오름캠핑장,펜션 10개를 운영하고 있으며 각종 모임이 가능하도록 식당,회의실,야외무대가 설치되어 있습니다.홍천군 1등 마을답게 캠핑장,펜션 마을 전지역 wi-fi 사용이 가능하며 매년 봄 팸투어 실시, 여름엔 마을에서 재배한 홉으로 직접만든 맥주축제,마리소리 음악축제 를 열고 있습니다.계곡의 경우 수심이 다양하여 다이빙 포인트가 2곳이 있으며 아이들이 안전하게 물놀이를 할 수 있는 곳도 여러 곳 있습니다. 홍천 용오름캠핑장 팸투어 다녀왔어요. 요즘은 농산촌체험마을에서 캠핑과 여러프로그램을 같이 하는 곳이 추세더라고요. 아미산이 둘러쌓인 청정계곡이 흐르는 아름다운 용오름체험휴양마을 에서 운영하는 홍천 용오름캠핑장 팸투어 다녀왔어요. 테크 앞 강이... 붕어빵 가족의 담너머 세상구경 https://m.blog.naver.com/1092119/220711235599 가을여행-홍천여행- 홍천 용오름 마을 첫째날 여행의 계절 가을입니다. 요즘 저희는 강원도에 꽃힌 상태인지라...카페 행복한 이티씨와 함께하는 홍천 용오름 마을 1박2일 체험에 참가를 하였답니다! 평소 체험 시간보다 조금 늦은 출발을 해서 차가 밀리지 않으려나... 귀여운 단지 https://m.blog.naver.com/sanguidan/50181593653 용오름마을 캠핑장 여름휴가의 시즌이다.. 강원도의 계곡과 시원함을 만끽하기 위해 캠핑장을 검색하다 우연히 알게 된 홍천의 용오름 캠핑장.. 성수기라 캠핑장 요금들이 사악하다 용오름캠핑장 옆엔 해미르 캠핑장이 있는데... ★살로몬의 잇츠캠핑★ https://m.blog.naver.com/freeguy9040/20163628934 맥주효모로 만든 용오름맥주마을 바쏘 맥주샴푸와 맥주마스크팩... 1988년까지 맥주 원료인

안드로이드 서버 php 통신(간단히)

안드로이드 서버 php 통신(간단히)

안드로이드가 웹과 통신을 하기 위해선 아래 두가지가 필요하다.

1. 웹 서버 (php)

2. 인터넷 연결이 가능한 안드로이드 단말기 or 안드로이드 시뮬레이터

우리는 안드로이드 단말에서 정말 간단한 php 문을 호출할 생각이다.(나중에 응용가능하게)

웹 서버 같은경우에 apm 이나 wpn-xm 등을 설치해서 구축할수 있다.

설치방법은 구글신에게 물어보자.

php 코드 부분

먼저

값을 주고 받을 php 를 만든다.

아래는 아주 간단히 값을 받고 값을 전달하는 php문이다.

php 파일 이름은 phpTest.php 이다. 텍스트 편집기로 파일을 만들고 저장하자.

필자는 notpad++을 사용했다.

post 방식으로 각각 name, age, sex 라는 변수를 받아와

출력하는 간단한 php 입니다.

해당 php 파일을 자신의 서버에 올립시다.

아래 제가 생각하는 php에 대한 간단한 생각들.

php 통신

-보내주는건 많이 보내줄수있는듯 get 방식이든 post 방식이든 get방식같은경우에 글자수가 제한이 있고 주소창에서 입력이 가능하므로 결국엔 post 방식으로 보내주는게 안전할듯.

받을때는 echo 로 출력된 정보를 받는다고 생각하면 편할거같음. 받는 데이터 같은경우에 웹에있는 데이터를 받는다고 생각됨.

여러개의 데이터를 전송받기 위해서는 echo 에서 구분자를 이용한 방법이나 결국 json 형식으로 받는 수 밖에 없음(아님 xml)

결국 결론은 안드로이드 단말에서 php 서버에 보낼수 있는 변수들은 무제한이고, 받을수 있는 값들은 php 문에 출력되는 echo 문들 이다.

결국 이렇기 때문에 많은 데이터를 받을때는(mysql 사용등) json 형식같은 것을 사용해서 php 값들받게 되는것 같다.

안드로이드 코드부분

우리가 만들 안드로이드 코드는

버튼을 누르면 php 웹에 접속해서 원하는 값을 받는 코드입니다.

제일 먼저 해야될것은 AndroidMainfest에 인터넷이 가능하도록 퍼미션을 설정하는 것입니다.

그리고 active_main.xml 에서 버튼과 텍스트 뷰를 추가합니다.

허니콤이후로 네트워크 접속시 별도의 스레드를 돌려야 오류가 나지 않습니다.

AsyncTask를 사용합니다.

urlpath 에는 자기가 접속할 php 주소를 입력합니다.

onCreate 함수(엑티비티가 처음 시작할때 무조건 실행되는 함수)에서

버튼과 텍스트뷰를 찾고 버튼을 클릭했을시에 HttpTask를 실행합니다.(AsyncTask)

bn.setOnClickListener(new Button.OnClickListener(){

public void onClick(View v) {

new HttpTask().execute();

}

});

아래는 AsyncTask 입니다. 세번째 인자의 String를 입력했는데 이 값은

doInBackground의 반환값이며, onPostExecute의 매개변수가 됩니다.

doInBackground의 반환값이 onPostExcute의 인자로 전달된다고 생각하면 될것 같습니다.

자세한 내용은 AsyncTask로 검색하면 나올것입니다.

php 상에서 post 값으로 받기 때문에 HttpPost 로 선언해주고

넘길 값들을 Vector 에 저장한후 웹으로 보내줍니다.

onPostExcute 에서 텍스트뷰를 변경해줍니다. onPostExcute는 doinBackground 가 실행된후 실행되는 함수이며,

안드로이드 메인 ui 같은경우에는 여기서 변경해주어야 에러가 나지 않습니다.

public class MainActivity extends Activity {

Button bn;

TextView result;

//접속할주소

private final String urlPath = "";

private final String TAG = "PHPTEST";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

bn = (Button)findViewById(R.id.btn);

result = (TextView)findViewById(R.id._result);

bn.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

new HttpTask().execute();

}

});

}

class HttpTask extends AsyncTask{

@Override

protected String doInBackground(Void... voids) {

// TODO Auto-generated method stub

try{

HttpPost request = new HttpPost(urlPath);

//전달할 인자들

Vector nameValue = new Vector();

nameValue.add(new BasicNameValuePair("name", "홍길동"));

nameValue.add(new BasicNameValuePair("age", "24"));

nameValue.add(new BasicNameValuePair("sex", "male"));

//웹 접속 - utf-8 방식으로

HttpEntity enty = new UrlEncodedFormEntity(nameValue, HTTP.UTF_8);

request.setEntity(enty);

HttpClient client = new DefaultHttpClient();

HttpResponse res = client.execute(request);

//웹 서버에서 값받기

HttpEntity entityResponse = res.getEntity();

InputStream im = entityResponse.getContent();

BufferedReader reader = new BufferedReader(new InputStreamReader(im, HTTP.UTF_8));

String total = "";

String tmp = "";

//버퍼에있는거 전부 더해주기

//readLine -> 파일내용을 줄 단위로 읽기

while((tmp = reader.readLine())!= null)

{

if(tmp != null)

{

total += tmp;

}

}

im.close();

//결과창뿌려주기 - ui 변경시 에러

//result.setText(total);

return total;

}catch(UnsupportedEncodingException e){

e.printStackTrace();

}catch(IOException e){

e.printStackTrace();

}

//오류시 null 반환

return null;

}

//asyonTask 3번째 인자와 일치 매개변수값 -> doInBackground 리턴값이 전달됨

//AsynoTask 는 preExcute - doInBackground - postExecute 순으로 자동으로 실행됩니다.

//ui는 여기서 변경

protected void onPostExecute(String value){

super.onPostExecute(value);

result.setText(value);

}

}

}

from http://hyunity3d.tistory.com/513 by ccl(A) rewrite - 2020-03-06 11:54:12

댓글

이 블로그의 인기 게시물

[2020 정보처리기사 실기 - 프로그래밍 언어 활용] 2. 언어 특성 활용...

phpmyadmin 설치 차분히 따라해보자

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.