반응형
예제 코드 보면서 하고 있는데요
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 를 정삭적으로 호출하셨습니다!
");
?>
입니다 부탁드리겠습니
2012.12.26 17:48:15
2012.12.27 09:23:01
그럼 어떠한 방식으로 접근해야 하는지 알수 있을까요??
제컴에서 localhost로의 접근은 되는데 폰에서 하려면 어떤식으로 해야하나요? ㅠㅠ
한번도 이런부분안해봐서 난감하네요 도움 부탁드룡 ~
2012.12.27 09:27:44
헐.. 먼저 localhost라는 것은 루프백 ip주소(127.0.0.1)를 대신할수있는 상수라고 보시면 됩니다.
그렇기 때문에 다른 컴퓨터에 접근할때 localhost를 쓰면 당연히 접근할수 없게 되겠죠.
localhost대신 대상 컴퓨터의 ip주소와 port번호를 적어주시면 됩니다.
ip주소와 port번호 확인법은 검색해보시는것이 더 빠를거라 생각되구요.
ip주소와 port번호를 사용한 주소는 대략 이런 식입니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - Bitmap OutOfMemoryError 해결책 (0) | 2013.12.05 |
---|---|
안드로이드 XmlPullParser 사용 예제 (0) | 2013.12.01 |
안드로이드 onConfigurationChanged 화면 방향 상태 알아보기 (0) | 2013.11.22 |
android.os.NetworkOnMainThreadException 에러 (0) | 2013.11.19 |
Http Post 방식으로 웹서버와 자료를 주고받는 예제 (0) | 2013.11.18 |
[Android] 안드로이드 플랫폼에서 HTTP POST 요청 처리하기 ( XML 파싱 ) (0) | 2013.11.18 |
Invalid project description error 메시지 해결 방법 (0) | 2013.11.18 |
펌자료) webview 가 보이지 않을때, javascript 실행 방지 (0) | 2013.10.31 |
에이.. 설마 url을 localhost로 적어놓고 안된다고 하시는건 아니겠죠?
저거 소스 그대로 돌리는건 아니겠죠?