안드로이드 개발 질문/답변
(글 수 45,052)
예제 코드 보면서 하고 있는데요
URL을 제가 APMsetup으로 구축한 서버로 바꾸면 에러는 안뜨는데
어플이 죽지도 않고 반응을 안하네요
로그 찍어보니깐
OutputStreamWriter outStream = new OutputStreamWriter(http.getOutputStream(), "EUC-KR");
이부분에서 에러나는데 혹시 왜 그러는지 아시는분 있나요??
전체코든느
package com.example.hello;
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.TabActivity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
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 MainActivity extends TabActivity {
// 전역변수를 선언한다
TabHost mTabHost = null;
String myId, myPWord, myTitle, mySubject, myResult;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
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://localhost/first.php);
// 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");
Log.d("check", "1" + myId);
PrintWriter writer = new PrintWriter(outStream);
Log.d("check", "2");
writer.write(buffer.toString());
writer.flush();
Log.d("check", "3");
//--------------------------
// 서버에서 전송받기
//--------------------------
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(); // 전송결과를 전역 변수에 저장
Log.d("check", "Stirng" + myResult);
((TextView)(findViewById(R.id.text_result))).setText(myResult);
Toast.makeText(MainActivity.this, "전송 후 결과 받음", 0).show();
} catch (MalformedURLException e) {
//
} catch (IOException e) {
//
} // try
} // HttpPostData
} // Activity
이고요
php 파일은
<?
// 변수 내용 확인
//if ($id == "")
$id = $_POST["id"];
//if ($pword == "")
$pword = $_POST["pword"];
//if ($title == "")
$title = $_POST["title"];
//if ($subject == "")
$subject = $_POST["subject"];
// 변수 내용 출력
echo ("
님께서 PHP로 전송한 내용입니다
-----------------------------------------------------------------\r\n
사용자 ID : $id \r\n
비밀번호 : $pword \r\n
개념 : $title \r\n
대책 : $subject \r\n
-----------------------------------------------------------------\r\n
축하드립니다. lesson01.php 를 정삭적으로 호출하셨습니다!
");
?>
입니다 부탁드리겠습니다
에이.. 설마 url을 localhost로 적어놓고 안된다고 하시는건 아니겠죠?
저거 소스 그대로 돌리는건 아니겠죠?