所以我使用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.
我已授权使用互联网。有任何想法吗?谢谢你们
答案 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中进行发送/接收;在主线程上做这件事并不好。实际上,我很惊讶它让你一开始就做到了。