Http Post 방식으로 웹서버와 자료를 주고받는 예제
페이지 정보
작성자 MintState 댓글 0건 조회 11,963회 작성일 11-04-03 14:21본문
Http Post 방식으로 웹서버와 자료를 주고받는 예제
다음 프로그램은 http://korea-com.org/foxmann/lesson01.php 와 자료를 주고받는 예제이다.
[주의 사항]
1. http://korea-com.org/foxmann/lesson01.php 는 실습을 위해 임시로 만든 페이지이므로 언제든지 내 맘대로 삭제해 버릴 수 있다.
2. 위의 사이트를 해킹하는 행위는 형사 처벌을 받게 되므로 주의해야 한다.
3. 해킹 시도시 접속자의 ip를 추적해서 사용자의 컴퓨터를 포맷해 버리는 악랄한(?) 프로텍트를 사용하고 있으므로 특히 주의한다.
실행 결과 : 페이지1로 전송하고 페이지2로 결과 받음
main.xml
Manifest.xml에 다음과 같은 퍼미션을 줘야 한다.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
project
lesson01.php
출처 : http://www.androidside.com/bbs/board.php?bo_table=421&wr_id=137
다음 프로그램은 http://korea-com.org/foxmann/lesson01.php 와 자료를 주고받는 예제이다.
[주의 사항]
1. http://korea-com.org/foxmann/lesson01.php 는 실습을 위해 임시로 만든 페이지이므로 언제든지 내 맘대로 삭제해 버릴 수 있다.
2. 위의 사이트를 해킹하는 행위는 형사 처벌을 받게 되므로 주의해야 한다.
3. 해킹 시도시 접속자의 ip를 추적해서 사용자의 컴퓨터를 포맷해 버리는 악랄한(?) 프로텍트를 사용하고 있으므로 특히 주의한다.
실행 결과 : 페이지1로 전송하고 페이지2로 결과 받음
main.xml
<?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableLayout android:id="@+id/page01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="1"> <TableRow> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ID :"/> <EditText android:id="@+id/edit_Id" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </TableRow> <TableRow> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="PWord : "/> <EditText android:id="@+id/edit_pword" android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true"/> </TableRow> <TableRow> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="개념 : "/> <EditText android:id="@+id/edit_title" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </TableRow> <TableRow> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="대책 : "/> <EditText android:id="@+id/edit_subject" android:layout_width="fill_parent" android:layout_height="wrap_content" android:lines="4"/> </TableRow> <View android:layout_height="2dip" android:background="#AAAAAA"/> <TableRow> <Button android:text=" 전 송 " android:id="@+id/button_submit" android:layout_column="1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </TableRow> </TableLayout> <LinearLayout android:id="@+id/page02" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/text_result" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost>
Manifest.xml에 다음과 같은 퍼미션을 줘야 한다.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
project
package com.http_post; import java.io.*; import java.net.*; import android.app.*; import android.os.*; import android.util.*; import android.view.*; import android.widget.*; public class MainActivity extends TabActivity { // 전역변수를 선언한다 TabHost mTabHost = null; String myId, myPWord, myTitle, mySubject, myResult; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTabHost = getTabHost(); // Tab 만들기 mTabHost.addTab(mTabHost.newTabSpec("tab_1").setIndicator("서버로 전송").setContent(R.id.page01)); mTabHost.addTab(mTabHost.newTabSpec("tab_2").setIndicator("서버에서 받음").setContent(R.id.page02)); findViewById(R.id.button_submit).setOnClickListener(buttonClick); } //------------------------------ // button Click //------------------------------ Button.OnClickListener buttonClick = new Button.OnClickListener() { public void onClick(View v) { // 사용자가 입력한 내용을 전역변수에 저장한다 myId = ((EditText)(findViewById(R.id.edit_Id))).getText().toString(); myPWord = ((EditText)(findViewById(R.id.edit_pword))).getText().toString(); myTitle = ((EditText)(findViewById(R.id.edit_title))).getText().toString(); mySubject = ((EditText)(findViewById(R.id.edit_subject))).getText().toString(); HttpPostData(); // 서버와 자료 주고받기 } }; //------------------------------ // Http Post로 주고 받기 //------------------------------ public void HttpPostData() { try { //-------------------------- // URL 설정하고 접속하기 //-------------------------- URL url = new URL("http://korea-com.org/foxmann/lesson01.php"); // URL 설정 HttpURLConnection http = (HttpURLConnection) url.openConnection(); // 접속 //-------------------------- // 전송 모드 설정 - 기본적인 설정이다 //-------------------------- http.setDefaultUseCaches(false); http.setDoInput(true); // 서버에서 읽기 모드 지정 http.setDoOutput(true); // 서버로 쓰기 모드 지정 http.setRequestMethod("POST"); // 전송 방식은 POST // 서버에게 웹에서 <Form>으로 값이 넘어온 것과 같은 방식으로 처리하라는 걸 알려준다 http.setRequestProperty("content-type", "application/x-www-form-urlencoded"); //-------------------------- // 서버로 값 전송 //-------------------------- StringBuffer buffer = new StringBuffer(); buffer.append("id").append("=").append(myId).append("&"); // php 변수에 값 대입 buffer.append("pword").append("=").append(myPWord).append("&"); // php 변수 앞에 '$' 붙이지 않는다 buffer.append("title").append("=").append(myTitle).append("&"); // 변수 구분은 '&' 사용 buffer.append("subject").append("=").append(mySubject); OutputStreamWriter outStream = new OutputStreamWriter(http.getOutputStream(), "EUC-KR"); PrintWriter writer = new PrintWriter(outStream); writer.write(buffer.toString()); writer.flush(); //-------------------------- // 서버에서 전송받기 //-------------------------- InputStreamReader tmp = new InputStreamReader(http.getInputStream(), "EUC-KR"); BufferedReader reader = new BufferedReader(tmp); StringBuilder builder = new StringBuilder(); String str; while ((str = reader.readLine()) != null) { // 서버에서 라인단위로 보내줄 것이므로 라인단위로 읽는다 builder.append(str + "\n"); // View에 표시하기 위해 라인 구분자 추가 } myResult = builder.toString(); // 전송결과를 전역 변수에 저장 ((TextView)(findViewById(R.id.text_result))).setText(myResult); Toast.makeText(MainActivity.this, "전송 후 결과 받음", 0).show(); } catch (MalformedURLException e) { // } catch (IOException e) { // } // try } // HttpPostData } // Activity
lesson01.php
<? // 변수 내용 확인 if ($id == "") $id = "너는 ID도 없냐?"; if ($pword == "") $pword = "칠칠맞게 비밀번호도 잊어먹고 다니네..."; if ($title == "") $title = "증말 개념없는 사람일세..."; if ($subject == "") $subject = "에구~~ 대책이 없네..."; // 변수 내용 출력 echo (" 님께서 PHP로 전송한 내용입니다 -----------------------------------------------------------------\r\n 사용자 ID : $id \r\n 비밀번호 : $pword \r\n 개념 : $title \r\n 대책 : $subject \r\n -----------------------------------------------------------------\r\n 축하드립니다. lesson01.php 를 정삭적으로 호출하셨습니다! "); ?>
출처 : http://www.androidside.com/bbs/board.php?bo_table=421&wr_id=137
|
댓글목록
등록된 댓글이 없습니다.