자료는 http://www.androidside.com/bbs/board.php?bo_table=421&wr_id=137 여기서 퍼왔습니다.
package dit.ac.kr;
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 HttpPostActivity extends Activity {
//TabHost mTabHost= null;
String myId,myPWord,myTitle,mySubject,myResult;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//mTabHost=getTabHost();
TabHost tabs = (TabHost)findViewById(R.id.tabhost);
tabs.setup();
tabs.addTab(tabs.newTabSpec("tab_1").setIndicator("서버로전송").setContent(R.id.page01));
tabs.addTab(tabs.newTabSpec("tab_2").setIndicator("서버로전송").setContent(R.id.page02));
findViewById(R.id.button_submit).setOnClickListener(buttonClick);
}
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();
}
};
public void HttpPostData(){
try{
URL url = new URL("http://korea-com.org/foxmann/lesson01.php");
HttpURLConnection http=(HttpURLConnection) url.openConnection();
http.setDefaultUseCaches(false);
http.setDoInput(true);
http.setDoOutput(true);
http.setRequestMethod("POST");
http.setRequestProperty("content-type", "application/x-www-form-urlencoded");
StringBuffer buffer=new StringBuffer();
buffer.append("id").append("=").append(myId).append("&");
buffer.append("pword").append("=").append(myPWord).append("&");
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");
}
myResult=builder.toString();
((TextView)(findViewById(R.id.text_result))).setText(myResult);
Toast.makeText(HttpPostActivity.this, "전송 후 결과 받음", 0).show();
}catch(MalformedURLException e){
}catch(IOException e){
}
}
}
이게 java 파일인데 어플 실행을 하고 전송을 누르면 자꾸 에러가 뜨네요 ㅜㅜ
02-22 07:39:31.289: I/Process(1195): Sending signal. PID: 1195 SIG: 9
02-22 07:39:41.498: D/gralloc_goldfish(1261): Emulator without GPU emulation detected.
02-22 07:39:48.658: D/AndroidRuntime(1261): Shutting down VM
02-22 07:39:48.658: W/dalvikvm(1261): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
02-22 07:39:48.708: E/AndroidRuntime(1261): FATAL EXCEPTION: main
02-22 07:39:48.708: E/AndroidRuntime(1261): android.os.NetworkOnMainThreadException
02-22 07:39:48.708: E/AndroidRuntime(1261): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
02-22 07:39:48.708: E/AndroidRuntime(1261): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
02-22 07:39:48.708: E/AndroidRuntime(1261): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
02-22 07:39:48.708: E/AndroidRuntime(1261): at java.net.InetAddress.getAllByName(InetAddress.java:220)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
02-22 07:39:48.708: E/AndroidRuntime(1261): at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
02-22 07:39:48.708: E/AndroidRuntime(1261): at dit.ac.kr.HttpPostActivity.HttpPostData(HttpPostActivity.java:71)
02-22 07:39:48.708: E/AndroidRuntime(1261): at dit.ac.kr.HttpPostActivity$1.onClick(HttpPostActivity.java:49)
02-22 07:39:48.708: E/AndroidRuntime(1261): at android.view.View.performClick(View.java:3511)
02-22 07:39:48.708: E/AndroidRuntime(1261): at android.view.View$PerformClick.run(View.java:14105)
02-22 07:39:48.708: E/AndroidRuntime(1261): at android.os.Handler.handleCallback(Handler.java:605)
02-22 07:39:48.708: E/AndroidRuntime(1261): at android.os.Handler.dispatchMessage(Handler.java:92)
02-22 07:39:48.708: E/AndroidRuntime(1261): at android.os.Looper.loop(Looper.java:137)
02-22 07:39:48.708: E/AndroidRuntime(1261): at android.app.ActivityThread.main(ActivityThread.java:4424)
02-22 07:39:48.708: E/AndroidRuntime(1261): at java.lang.reflect.Method.invokeNative(Native Method)
02-22 07:39:48.708: E/AndroidRuntime(1261): at java.lang.reflect.Method.invoke(Method.java:511)
02-22 07:39:48.708: E/AndroidRuntime(1261): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-22 07:39:48.708: E/AndroidRuntime(1261): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-22 07:39:48.708: E/AndroidRuntime(1261): at dalvik.system.NativeStart.main(Native Method)
02-22 07:39:49.059: D/dalvikvm(1261): GC_CONCURRENT freed 193K, 4% free 9280K/9607K, paused 5ms+38ms
이건 LogCat 입니다. 봐도 모르겠어요\ㅠㅠ
다른분들은 다 잘된다고 하시던데;;
그리고 나와있는 php 사이트는 db를 사용해서 만든 사이트인가요?
android.os.NetworkOnMainThreadException http://ironheel.tistory.com/48
여기에 에러에관한 내용이 있고요.. 스트릭모드로 회피하는법을 설명하였지만.. 스트릭모드로 회피하기보다는 별도의 스레드에서 처리하는것을 권장합니다..(메인스레드가 아닌 다른 스레드)




api 레벨 몇인지 잘 모르겠는데 네트워크 사용은 메인 스레드가 아닌 별도의 스레드를 생성하여 작업하셔야 합니다.