Android Http POST 방식으로 웹서버에 전달

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="Title: "/> 
                    <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="Subject: "/> 
                    <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="SEND"  
                         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>   

MainActivity

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 

serverpage.php

<? 
// 변수 내용 확인 
if ($id == "") $id = "no id"; 
if ($pword == "") $pword = "no password"; 

// 변수 내용 출력 
echo (" 
  ID : $id \r\n 
  PASS : $pword \r\n 
  TITLE : $title \r\n 
  SUBJECT : $subject \r\n 
"); 
?> 

 

Tags: 
youngdeok's picture

Language

Get in touch with us

"If you would thoroughly know anything, teach it to other."
- Tryon Edwards -