서버에서 값을 가져 오는 Android 프로그램이 예기치 않게 종료됩니다.

user3272483

나는 PHP 스크립트에서 데이터를 가져 오는 안드로이드 앱을 만들고 있지만 계속 충돌합니다. 내가 작성한 모든 파일을 확인했으며 오류를 발견 할 수 없습니다. 더욱이 오류없이 컴파일됩니다.

이것은 나의 MainActivity.java

package com.whitehouse.sms;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.net.ParseException;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends ListActivity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        String result = null;
        InputStream is = null;
        StringBuilder sb = null;
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        List<String> r = new ArrayList<String>();

        try{

        //http post
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://000.000.4.49/categories.php");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
        }
        catch(Exception e){
            Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
       }

        //Convert response to string  
        try
        {
          BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));

          sb = new StringBuilder();

          String line = null;

          while ((line = reader.readLine()) != null) 
          {
             sb.append(line + "\n");
          }

          is.close();

          result = sb.toString();
        }
        catch(Exception e)
        {
            Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
        }
        //END Convert response to string   
        try{
                JSONArray jArray = new JSONArray(result);
                JSONObject json_data=null;
                for(int i=0;i<jArray.length();i++)
                {
                   json_data = jArray.getJSONObject(i);
                   r.add(json_data.getString("category"));
               }
               setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, r));
            }
            catch(JSONException e1){
                Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
            } catch (ParseException e1) {
                Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
        }

    }
}

이것은 내 안드로이드 매니페스트입니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.whitehouse.sms"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-permission android:name="android.permission.INTERNET" />      
    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
        <activity android:name=".Database_demo"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>


</manifest> 

이것은 내 main.xml입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
</LinearLayout>

그리고 이것은 내 strings.xml입니다.

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
    <string name="hello">Hello World, Database_demo!</string>
    <string name="app_name">Love Android Mobile Application</string>
</resources>

이것은 내 PHP 파일에서 얻은 것입니다.

[{"category":"france"},{"category":"england"},{"category":"germany"},{"category":"denamrk"}]

그리고 이것은 php 파일입니다

<?php
mysql_connect("localhost","root","");
mysql_select_db("test");
$sql=mysql_query("SELECT category from category");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>

모든 것이 괜찮아 보이기 때문에 프로그램에 무엇이 잘못되었을 수 있습니까?.

영감 없음

GUI 용으로 예약 된 메인 스레드에서는 인터넷 연결 기능을 사용할 수 없습니다. LogCat을 읽었다면 작성되었을 것입니다.

gurinderhans가 제안한대로 AsyncTask를 사용하십시오.

내 MVC 호환 코드가 있습니다.

public class PHPRequestRetriever extends AsyncTask<Object, Void, String> {

    public interface Listener {
        void handlePHPRequestFinished(String result);
    }

    private Listener listener = null;
    private Exception exception = null;

    public PHPRequestRetriever(Listener listener) {
        this.listener = listener;
    }

    @Override
    protected String doInBackground(Object... params) {
        String data = "";
        String url = (String) params[0];
        ArrayList<NameValuePair> args = (ArrayList<NameValuePair>) params[1];
        InputStream is = null;

        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            httppost.setEntity(new UrlEncodedFormEntity(args));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

        } catch (Exception e) {
            Log.e("PHPRequestRetriever", "Error in http connection " + e.toString());
            exception = e;
        }

        try {
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            data = sb.toString();
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
            exception = e;
        }finally{
            is.close();
        }
        return data;
    }


    @Override
    protected void onPostExecute(String data) {
        if (exception == null && !data.equals("")) {
            this.listener.handlePHPRequestFinished(data);
        } else {
            Toast.makeText((Context) listener, "Error", Toast.LENGTH_LONG).show();
        }
    }
}

주요 활동 :

public class MainActivity extends ListActivity implements PHPRequestRetriever.Listener {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        PHPRequestRetriever retriever = new PHPRequestRetriever(this);
        ArrayList<NameValuePair> args = new ArrayList<NameValuePair>();
        // Set your args here
        retriever.execute("http://example.com/phpscript.php", args);

    }

    @Override
    public void handlePHPRequestFinished(String data) {
        // Handle the result
    }

}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

iPad에서 이전보기로 돌아 가면 iPhone에서 완벽하게 작동하는 동안 응용 프로그램이 종료됩니다

분류에서Dev

azure + postgresql : 오류 수정 방법 : 서버에 연결할 수 없음 : 서버가 예기치 않게 연결을 종료했습니다.

분류에서Dev

브라우저 오류 : 응용 프로그램이 예기치 않게 종료되었습니다. shiny-server를 사용하는 동안 진단 정보가 JavaScript 오류 콘솔에 덤프되었습니다.

분류에서Dev

로그에 따르면 Windows 7이 예기치 않게 종료됩니다.

분류에서Dev

winScp : 연결이 예기치 않게 종료되었습니다. 서버가 명령 종료 상태 127을 보냈습니다.

분류에서Dev

Bash는 히스토리에서 종료 상태가 0이 아닌 프로그램을 기억하지 않습니다.

분류에서Dev

Python 파일이 실행되고 있지 않고 다음 오류가 표시됩니다. repl 프로세스가 예기치 않게 종료되었습니다.

분류에서Dev

내 프로그램이 폴더에서 파일을 가져 오지 않는 이유는 무엇입니까?

분류에서Dev

Python 프로그램이 종료되지 않습니다. 무작위로 가져 오기 오류 발생

분류에서Dev

다음 버튼 강제로 앱이 예기치 않게 종료됩니까?

분류에서Dev

JMagick : 프로그램이 예기치 않게 종료되고 -1073740940을 반환합니다.

분류에서Dev

JMagick : 프로그램이 예기치 않게 종료되고 -1073740940을 반환합니다.

분류에서Dev

내 프로그램이 스위치 케이스 뒤에 오는 코드를 인쇄하지 않는 이유는 무엇입니까? 스위치 케이스가 실행 된 후 종료됩니다.

분류에서Dev

선형 레이아웃을 삽입 할 때 '응용 프로그램이 예기치 않게 중지되었습니다'오류가 발생합니다.

분류에서Dev

IPython에서 Selenium의 '프로세스가 예기치 않게 상태 11로 종료 됨'을 해결하는 방법은 무엇입니까?

분류에서Dev

모듈에서 예기치 않은 값을 가져 왔습니다. @ngmodule 주석을 추가하십시오.

분류에서Dev

파이썬 가져 오기 기능이 프로그램을 가져 오지 않습니다

분류에서Dev

Windows 7 환경에서 예기치 않게 종료되는 모든 프로그램

분류에서Dev

Docker 및 postgresql : 서버가 예기치 않게 연결을 종료했습니다 (MacOS Catalina).

분류에서Dev

Android에서 다시 누르면 응용 프로그램을 종료하지 않는 이유는 무엇입니까?

분류에서Dev

내 응용 프로그램을 종료해도 Java Android 서비스가 파괴되지 않습니다.

분류에서Dev

다른 열이 SQL Server에서 값을 종료하지 않는 경우 날짜의 분기 별 행 및 합계 그룹 수 가져 오기

분류에서Dev

카메라에서 이미지를 가져 오는 동안 Android 응용 프로그램이 삼성 장치에서만 충돌합니다.

분류에서Dev

이 경우 "프로그램이 예기치 않게 중지되었습니다"를 일으키는 코드에 어떤 문제가 있습니까?

분류에서Dev

클라이언트에서 연결을 기다리지 않고 다중 스레드 서버가 종료됩니다.

분류에서Dev

SceneKit – 치명적 오류 : 자식 노드를 가져올 때 Optional 값을 언 래핑하는 동안 예기치 않게 nil이 발견되었습니다.

분류에서Dev

Const 오버로드가 예기치 않게 gcc에서 호출되었습니다. 컴파일러 버그 또는 호환성 수정?

분류에서Dev

프로그램이 QT opencv에서 예기치 않게 완료되었습니다.

분류에서Dev

QDateTime :: currentdatetime에서 프로그램이 예기치 않게 완료되었습니다.

Related 관련 기사

  1. 1

    iPad에서 이전보기로 돌아 가면 iPhone에서 완벽하게 작동하는 동안 응용 프로그램이 종료됩니다

  2. 2

    azure + postgresql : 오류 수정 방법 : 서버에 연결할 수 없음 : 서버가 예기치 않게 연결을 종료했습니다.

  3. 3

    브라우저 오류 : 응용 프로그램이 예기치 않게 종료되었습니다. shiny-server를 사용하는 동안 진단 정보가 JavaScript 오류 콘솔에 덤프되었습니다.

  4. 4

    로그에 따르면 Windows 7이 예기치 않게 종료됩니다.

  5. 5

    winScp : 연결이 예기치 않게 종료되었습니다. 서버가 명령 종료 상태 127을 보냈습니다.

  6. 6

    Bash는 히스토리에서 종료 상태가 0이 아닌 프로그램을 기억하지 않습니다.

  7. 7

    Python 파일이 실행되고 있지 않고 다음 오류가 표시됩니다. repl 프로세스가 예기치 않게 종료되었습니다.

  8. 8

    내 프로그램이 폴더에서 파일을 가져 오지 않는 이유는 무엇입니까?

  9. 9

    Python 프로그램이 종료되지 않습니다. 무작위로 가져 오기 오류 발생

  10. 10

    다음 버튼 강제로 앱이 예기치 않게 종료됩니까?

  11. 11

    JMagick : 프로그램이 예기치 않게 종료되고 -1073740940을 반환합니다.

  12. 12

    JMagick : 프로그램이 예기치 않게 종료되고 -1073740940을 반환합니다.

  13. 13

    내 프로그램이 스위치 케이스 뒤에 오는 코드를 인쇄하지 않는 이유는 무엇입니까? 스위치 케이스가 실행 된 후 종료됩니다.

  14. 14

    선형 레이아웃을 삽입 할 때 '응용 프로그램이 예기치 않게 중지되었습니다'오류가 발생합니다.

  15. 15

    IPython에서 Selenium의 '프로세스가 예기치 않게 상태 11로 종료 됨'을 해결하는 방법은 무엇입니까?

  16. 16

    모듈에서 예기치 않은 값을 가져 왔습니다. @ngmodule 주석을 추가하십시오.

  17. 17

    파이썬 가져 오기 기능이 프로그램을 가져 오지 않습니다

  18. 18

    Windows 7 환경에서 예기치 않게 종료되는 모든 프로그램

  19. 19

    Docker 및 postgresql : 서버가 예기치 않게 연결을 종료했습니다 (MacOS Catalina).

  20. 20

    Android에서 다시 누르면 응용 프로그램을 종료하지 않는 이유는 무엇입니까?

  21. 21

    내 응용 프로그램을 종료해도 Java Android 서비스가 파괴되지 않습니다.

  22. 22

    다른 열이 SQL Server에서 값을 종료하지 않는 경우 날짜의 분기 별 행 및 합계 그룹 수 가져 오기

  23. 23

    카메라에서 이미지를 가져 오는 동안 Android 응용 프로그램이 삼성 장치에서만 충돌합니다.

  24. 24

    이 경우 "프로그램이 예기치 않게 중지되었습니다"를 일으키는 코드에 어떤 문제가 있습니까?

  25. 25

    클라이언트에서 연결을 기다리지 않고 다중 스레드 서버가 종료됩니다.

  26. 26

    SceneKit – 치명적 오류 : 자식 노드를 가져올 때 Optional 값을 언 래핑하는 동안 예기치 않게 nil이 발견되었습니다.

  27. 27

    Const 오버로드가 예기치 않게 gcc에서 호출되었습니다. 컴파일러 버그 또는 호환성 수정?

  28. 28

    프로그램이 QT opencv에서 예기치 않게 완료되었습니다.

  29. 29

    QDateTime :: currentdatetime에서 프로그램이 예기치 않게 완료되었습니다.

뜨겁다태그

보관