package exam.post2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;
public class http_post2 extends Activity {
//TabHost mTabHost = null;
TabHost mTabHost = null;
String myId, myPWord, myResult;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Tab 만들기
findViewById(R.id.s_btn).setOnClickListener(buttonClick);
}
//------------------------------
// button Click
//------------------------------
Button.OnClickListener buttonClick = new Button.OnClickListener() {
public void onClick(View v) {
// 사용자가 입력한 내용을 전역변수에 저장한다
myId = ((EditText)(findViewById(R.id.id_ed))).getText().toString();
myPWord = ((EditText)(findViewById(R.id.pw_ed))).getText().toString();
HttpPostData(); // 서버와 자료 주고받기
}
};
//------------------------------
// Http Post로 주고 받기
//------------------------------
public void HttpPostData() {
try {
//--------------------------
// URL 설정하고 접속하기
//--------------------------
URL url = new URL("http://112.156.111.346:8080/test2.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); // php 변수 앞에 '$' 붙이지 않는다
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.r_text))).setText(myResult);
Toast.makeText(http_post2.this, "전송 후 결과 받음", 0).show();
} catch (MalformedURLException e) {
//
} catch (IOException e) {
//
} // try
} // HttpPostData
} // Activity
----
<?
// 변수 내용 확인
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 를 정삭적으로 호출하셨습니다!
");
?>
타 사이트에서 올라온 강좌에서
서버만 제 서버라 바꾸었는데요. (강좌분 서버 주소로 하면 값을 받아옵니다.)
값을 전혀 바꾸지 받아오지 못하네요.
이런 경우 어떻게 해야하나요? APM은 오토셋을 사용 중입니다.




서버에서 request 를 받기는 하나요?