Android应用数据库数据不会显示(从localhost检索JSON数据)

时间:2014-05-19 15:53:54

标签: android mysql database localhost

所以我使用XAMPP在localhost上设置了数据库。我有一个PHP脚本,可以成功地将数据转换为JSON数据。我现在正在尝试检索此数据并通过模拟器将其显示在我的Android应用程序上。我的代码很好,没有错误。但是数据库中的数据没有显示,尽管我认为应该是这样。这是我的主要活动代码

package com.example.testexternaldatabase;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

    TextView resultView;

    @SuppressLint("NewApi") @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        StrictMode.enableDefaults();
        resultView = (TextView) findViewById(R.id.result);

        getData();

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
    }
}

    public void getData() {
        String result = "";
        InputStream isr = null;
         try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httpost = new HttpPost("http://10.0.0.9/myfile.php");
            HttpResponse response = httpclient.execute(httpost);
            HttpEntity entity = response.getEntity();
            isr = entity.getContent();
        } catch (Exception e) {
        Log.e("log_tag", "Error in http connection " + e.toString());
        resultView.setText("Couldn't connect to database");
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(isr, "iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        } 
    } catch (Exception e) {
        Log.e("log_tag", "Error conerting result " + e.toString());

    }

    try {
        String s = "";
        JSONArray jArray = new JSONArray(result);

        for (int i = 0; i < jArray.length(); i++) {
            JSONObject json = jArray.getJSONObject(i);
            s = s +
                    "ID : " + json.getString("ID") + "\n" +
                    "Name" + json.getString("Name") + "\n" +
                    "Email" + json.getString("Email") + "\n\n";
        }

        resultView.setText(s);

        } catch (Exception e) {
            Log.e("log_tag", "Error Parsing Data" + e.toString());
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
        return rootView;
    }
}

}

我有一个textview

    android:id="@+id/result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="116dp"
    android:layout_marginTop="109dp"
    android:text="TextView" />

这是我的日志

05-19 12:02:41.049: D/dalvikvm(1501): GC_FOR_ALLOC freed 309K, 12% free 2865K/3248K, paused 52ms, total 55ms
05-19 12:02:41.089: E/log_tag(1501): Error Parsing Dataorg.json.JSONException: End of input at character 0 of 
05-19 12:02:41.169: D/StrictMode(1501): StrictMode policy violation; ~duration=279 ms:  android.os.StrictMode$StrictModeDiskReadViolation: policy=31 violation=2
05-19 12:02:41.169: D/StrictMode(1501):     at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1135)
05-19 12:02:41.169: D/StrictMode(1501):     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:106)
05-19 12:02:41.169: D/StrictMode(1501):     at  libcore.io.IoBridge.open(IoBridge.java:393)
05-19 12:02:41.169: D/StrictMode(1501):     at libcore.io.IoUtils$FileReader.<init>(IoUtils.java:207)
05-19 12:02:41.169: D/StrictMode(1501):     at libcore.io.IoUtils.readFileAsString(IoUtils.java:114)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.CertPinManager.readPinFile(CertPinManager.java:111)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.CertPinManager.rebuild(CertPinManager.java:85)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.CertPinManager.<init>(CertPinManager.java:49)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.TrustManagerImpl.<init>(TrustManagerImpl.java:137)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.TrustManagerImpl.<init>(TrustManagerImpl.java:97)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.TrustManagerFactoryImpl.engineGetTrustManagers(TrustManagerFactoryImpl.java:80)
05-19 12:02:41.169: D/StrictMode(1501):     at javax.net.ssl.TrustManagerFactory.getTrustManagers(TrustManagerFactory.java:219)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.SSLParametersImpl.createDefaultTrustManager(SSLParametersImpl.java:401)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.SSLParametersImpl.getDefaultTrustManager(SSLParametersImpl.java:392)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.SSLParametersImpl.<init>(SSLParametersImpl.java:118)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.SSLParametersImpl.getDefault(SSLParametersImpl.java:146)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.<init>(OpenSSLSocketFactoryImpl.java:34)
05-19 12:02:41.169: D/StrictMode(1501):     at java.lang.Class.newInstanceImpl(Native Method)
05-19 12:02:41.169: D/StrictMode(1501):     at java.lang.Class.newInstance(Class.java:1208)
05-19 12:02:41.169: D/StrictMode(1501):     at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:56)
05-19 12:02:41.169: D/StrictMode(1501):     at javax.net.ssl.HttpsURLConnection$NoPreloadHolder.<clinit>(HttpsURLConnection.java:114)
05-19 12:02:41.169: D/StrictMode(1501):     at javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(HttpsURLConnection.java:163)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.conn.ssl.SSLSocketFactory.<init>(SSLSocketFactory.java:247)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.conn.ssl.SSLSocketFactory.<init>(SSLSocketFactory.java:139)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.conn.ssl.SSLSocketFactory$NoPreloadHolder.<clinit>(SSLSocketFactory.java:162)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.conn.ssl.SSLSocketFactory.getSocketFactory(SSLSocketFactory.java:170)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.DefaultHttpClient.createClientConnectionManager(DefaultHttpClient.java:177)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:221)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:539)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-19 12:02:41.169: D/StrictMode(1501):     at com.example.testexternaldatabase.MainActivity.getData(MainActivity.java:53)
05-19 12:02:41.169: D/StrictMode(1501):     at com.example.testexternaldatabase.MainActivity.onCreate(MainActivity.java:39)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.Activity.performCreate(Activity.java:5231)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-19 12:02:41.169: D/StrictMode(1501):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-19 12:02:41.169: D/StrictMode(1501):     at android.os.Looper.loop(Looper.java:136)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-19 12:02:41.169: D/StrictMode(1501):     at java.lang.reflect.Method.invokeNative(Native Method)
05-19 12:02:41.169: D/StrictMode(1501):     at java.lang.reflect.Method.invoke(Method.java:515)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-19 12:02:41.169: D/StrictMode(1501):     at dalvik.system.NativeStart.main(Native Method)
05-19 12:02:41.169: D/StrictMode(1501): StrictMode policy violation; ~duration=183 ms: android.os.StrictMode$StrictModeNetworkViolation: policy=31 violation=4
05-19 12:02:41.169: D/StrictMode(1501):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1151)
05-19 12:02:41.169: D/StrictMode(1501):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
05-19 12:02:41.169: D/StrictMode(1501):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
05-19 12:02:41.169: D/StrictMode(1501):     at libcore.io.IoBridge.connect(IoBridge.java:112)
05-19 12:02:41.169: D/StrictMode(1501):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
05-19 12:02:41.169: D/StrictMode(1501):     at     java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
05-19 12:02:41.169: D/StrictMode(1501):     at java.net.Socket.connect(Socket.java:843)
05-19 12:02:41.169: D/StrictMode(1501):     at     org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-19 12:02:41.169: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-19 12:02:41.169: D/StrictMode(1501):     at com.example.testexternaldatabase.MainActivity.getData(MainActivity.java:53)
05-19 12:02:41.169: D/StrictMode(1501):     at com.example.testexternaldatabase.MainActivity.onCreate(MainActivity.java:39)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.Activity.performCreate(Activity.java:5231)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-19 12:02:41.169: D/StrictMode(1501):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-19 12:02:41.169: D/StrictMode(1501):     at android.os.Looper.loop(Looper.java:136)
05-19 12:02:41.169: D/StrictMode(1501):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-19 12:02:41.169: D/StrictMode(1501):     at java.lang.reflect.Method.invokeNative(Native Method)
05-19 12:02:41.169: D/StrictMode(1501):     at java.lang.reflect.Method.invoke(Method.java:515)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-19 12:02:41.169: D/StrictMode(1501):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-19 12:02:41.169: D/StrictMode(1501):     at dalvik.system.NativeStart.main(Native Method)
05-19 12:02:41.179: D/StrictMode(1501): StrictMode policy violation; ~duration=106 ms: android.os.StrictMode$StrictModeNetworkViolation: policy=31 violation=4
05-19 12:02:41.179: D/StrictMode(1501):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1151)
05-19 12:02:41.179: D/StrictMode(1501):     at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:163)
05-19 12:02:41.179: D/StrictMode(1501):     at libcore.io.IoBridge.recvfrom(IoBridge.java:506)
05-19 12:02:41.179: D/StrictMode(1501):     at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
05-19 12:02:41.179: D/StrictMode(1501):     at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
05-19 12:02:41.179: D/StrictMode(1501):     at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-19 12:02:41.179: D/StrictMode(1501):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-19 12:02:41.179: D/StrictMode(1501):     at com.example.testexternaldatabase.MainActivity.getData(MainActivity.java:53)
05-19 12:02:41.179: D/StrictMode(1501):     at com.example.testexternaldatabase.MainActivity.onCreate(MainActivity.java:39)
05-19 12:02:41.179: D/StrictMode(1501):     at android.app.Activity.performCreate(Activity.java:5231)
05-19 12:02:41.179: D/StrictMode(1501):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-19 12:02:41.179: D/StrictMode(1501):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-19 12:02:41.179: D/StrictMode(1501):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-19 12:02:41.179: D/StrictMode(1501):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-19 12:02:41.179: D/StrictMode(1501):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-19 12:02:41.179: D/StrictMode(1501):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-19 12:02:41.179: D/StrictMode(1501):     at android.os.Looper.loop(Looper.java:136)
05-19 12:02:41.179: D/StrictMode(1501):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-19 12:02:41.179: D/StrictMode(1501):     at java.lang.reflect.Method.invokeNative(Native Method)
05-19 12:02:41.179: D/StrictMode(1501):     at java.lang.reflect.Method.invoke(Method.java:515)
05-19 12:02:41.179: D/StrictMode(1501):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-19 12:02:41.179: D/StrictMode(1501):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-19 12:02:41.179: D/StrictMode(1501):     at dalvik.system.NativeStart.main(Native Method)
05-19 12:02:41.319: D/(1501): HostConnection::get() New Host Connection established 0xb8695400, tid 1501
05-19 12:02:41.379: W/EGL_emulation(1501): eglSurfaceAttrib not implemented
05-19 12:02:41.399: D/OpenGLRenderer(1501): Enabling debug mode 0
05-19 12:02:43.699: W/EGL_emulation(1501): eglSurfaceAttrib not implemented
05-19 12:02:44.989: W/InputEventReceiver(1501): Attempted to finish an input event but the input event receiver has already been disposed.

我已授权使用互联网。有任何想法吗?谢谢你们

1 个答案:

答案 0 :(得分:0)

虽然我对此并不乐观,但有以下几点需要检查:

确保将getString("String")与传入的JSON格式完全匹配,并记住区分大小写。

"ID : " + json.getString("ID") + "\n" +
"Name" + json.getString("Name") + "\n" +
"Email" + json.getString("Email") + "\n\n";

在您的网络浏览器中检查http://10.0.0.9/myfile.php,确保您可以连接并查看数据是否正在显示。如果没有,那方面就有问题。

另外,尝试在AsyncTask中进行发送/接收;在主线程上做这件事并不好。实际上,我很惊讶它让你一开始就做到了。