-
[안드로이드]networkonmainthreadexception 오류카테고리 없음 2020. 9. 24. 18:41
알면 별거 아닌데, 몇일 동안 끙끙 구굴링, 삽질하다가 찾아 냈다..
networkonmainthreadexception 오류는 프로그램 정책을 바꾸면 된다.
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); ......... } }
package com.example.myapplication; import android.net.Uri; import android.os.Bundle; import android.os.StrictMode; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class MainActivity extends AppCompatActivity { private static final String TAG = null ; HttpURLConnection conn; URL url = null; // @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); TextView textview = (TextView)findViewById(R.id.textview); try { // Enter URL address where your php file resides url = new URL("http://192.168.168.227/b.php"); textview.setText(url + "성공......"); } catch (MalformedURLException e) { // TODO Auto-generated catch block textview.setText(e.toString()); e.printStackTrace(); } try { // Setup HttpURLConnection class to send and receive data from php and mysql conn = (HttpURLConnection)url.openConnection(); //conn.setReadTimeout(READ_TIMEOUT); //conn.setConnectTimeout(CONNECTION_TIMEOUT); conn.setRequestMethod("POST"); // setDoInput and setDoOutput method depict handling of both send and receive conn.setDoInput(true); conn.setDoOutput(true); // Append parameters to URL String[] params = new String[5]; params[0] = "홍길동"; params[1] = "1234"; Uri.Builder builder = new Uri.Builder() .appendQueryParameter("name", params[0]) .appendQueryParameter("pwd", params[1]); String query = builder.build().getEncodedQuery(); textview.setText("파라메터 : " + query); try { // Open connection for sending data OutputStream os = conn.getOutputStream(); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(os, "UTF-8")); writer.write(query); writer.flush(); writer.close(); os.close(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { textview.setText("성공....."); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; String page = ""; // 라인을 받아와 합친다. while ((line = reader.readLine()) != null){ page += line; } textview.setText(page); } else { textview.setText("실패...."); } conn.connect(); } catch (Exception e) { textview.setText(e.toString()); } } catch (IOException e1) { // TODO Auto-generated catch block textview.setText(e1.toString()); e1.printStackTrace(); } } }