0

.HttpClient 通过指定我的 PHP 文件的路径来发送命令来查询它似乎有效。将接收到的流转换为字符串也可以工作但最后不起作用......我不明白出了什么问题

我在一个纯Java项目中尝试同样的事情,导入所有需要json-lib等的包。它会转换数据,但在最后一步它失败了?!

服务器端:

<?php
    $Conn = mysql_connect("127.0.0.1","root","socrates");
    if (!$Conn)
        echo "not connected";
    $DbSelect = mysql_select_db("impetodb", $Conn);
    if (!$DbSelect)
    echo "db non connecté";
    $sql=mysql_query("select * from patients_infos ");

    while ($row=mysql_fetch_assoc($sql)) $output[]=$row;
    print (json_encode($output));

 mysql_close();

?>

ANDROID App端:

package com.example.getdata3;

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.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.widget.TextView;


public class ConnexionSQLActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
   try 
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_connexion_sql);
       TextView myTextView = (TextView)findViewById(R.id.patientName);
       String result = "";


    try {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://10.0.2.2/index.php");
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        InputStream is = entity.getContent();

        try
          {
           BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
           StringBuilder sb  = new StringBuilder();
           String line = null;

           while ((line = reader.readLine()) != null){

               sb.append(line + "\n");
           }

           is.close();

           result = sb.toString();


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


    }catch (Exception e){
        Log.e("log_tag","Error in Http Connexion"+e.toString());
    }    


    try {
            JSONArray jArray = new JSONArray(result);

             for(int i=0; i<jArray.length(); i++)
             {
               JSONObject json_data = jArray.getJSONObject(i);
               myTextView.setText(json_data.getString("nom"));
               //r.add(json_data.getString("categorie"));   
               }

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


    }catch (Exception e){

    Log.e("ERROR","ERROR IN CODE"+e.toString());

   }    

}

}

日志猫 >>>

    11-23 12:53:51.325: W/System.err(551): android.os.NetworkOnMainThreadException
11-23 12:53:51.335: W/System.err(551):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
11-23 12:53:51.335: W/System.err(551):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:74)
11-23 12:53:51.335: W/System.err(551):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
11-23 12:53:51.335: W/System.err(551):  at libcore.io.IoBridge.connect(IoBridge.java:112)
11-23 12:53:51.335: W/System.err(551):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
11-23 12:53:51.335: W/System.err(551):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
11-23 12:53:51.335: W/System.err(551):  at java.net.Socket.connect(Socket.java:842)
11-23 12:53:51.335: W/System.err(551):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
11-23 12:53:51.346: W/System.err(551):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
11-23 12:53:51.346: W/System.err(551):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11-23 12:53:51.346: W/System.err(551):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11-23 12:53:51.346: W/System.err(551):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
11-23 12:53:51.346: W/System.err(551):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-23 12:53:51.346: W/System.err(551):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-23 12:53:51.346: W/System.err(551):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-23 12:53:51.346: W/System.err(551):  at com.example.getdata3.ConnexionSQLActivity.onCreate(ConnexionSQLActivity.java:37)
11-23 12:53:51.346: W/System.err(551):  at android.app.Activity.performCreate(Activity.java:4465)
11-23 12:53:51.346: W/System.err(551):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-23 12:53:51.355: W/System.err(551):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
11-23 12:53:51.355: W/System.err(551):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-23 12:53:51.355: W/System.err(551):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
11-23 12:53:51.355: W/System.err(551):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-23 12:53:51.355: W/System.err(551):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-23 12:53:51.355: W/System.err(551):  at android.os.Looper.loop(Looper.java:137)
11-23 12:53:51.355: W/System.err(551):  at android.app.ActivityThread.main(ActivityThread.java:4340)
11-23 12:53:51.355: W/System.err(551):  at java.lang.reflect.Method.invokeNative(Native Method)
11-23 12:53:51.365: W/System.err(551):  at java.lang.reflect.Method.invoke(Method.java:511)
11-23 12:53:51.365: W/System.err(551):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-23 12:53:51.365: W/System.err(551):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-23 12:53:51.365: W/System.err(551):  at dalvik.system.NativeStart.main(Native Method)
11-23 12:53:51.375: E/log_tag(551): Error converting resultandroid.os.NetworkOnMainThreadException
11-23 12:53:51.375: W/System.err(551): org.json.JSONException: End of input at character 0 of 
11-23 12:53:51.385: W/System.err(551):  at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
11-23 12:53:51.385: W/System.err(551):  at org.json.JSONTokener.nextValue(JSONTokener.java:97)
11-23 12:53:51.395: W/System.err(551):  at org.json.JSONArray.<init>(JSONArray.java:87)
11-23 12:53:51.395: W/System.err(551):  at org.json.JSONArray.<init>(JSONArray.java:103)
11-23 12:53:51.395: W/System.err(551):  at com.example.getdata3.ConnexionSQLActivity.onCreate(ConnexionSQLActivity.java:70)
11-23 12:53:51.405: W/System.err(551):  at android.app.Activity.performCreate(Activity.java:4465)
11-23 12:53:51.405: W/System.err(551):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-23 12:53:51.405: W/System.err(551):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
11-23 12:53:51.405: W/System.err(551):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-23 12:53:51.415: W/System.err(551):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
11-23 12:53:51.415: W/System.err(551):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-23 12:53:51.415: W/System.err(551):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-23 12:53:51.415: W/System.err(551):  at android.os.Looper.loop(Looper.java:137)
11-23 12:53:51.415: W/System.err(551):  at android.app.ActivityThread.main(ActivityThread.java:4340)
11-23 12:53:51.415: W/System.err(551):  at java.lang.reflect.Method.invokeNative(Native Method)
11-23 12:53:51.415: W/System.err(551):  at java.lang.reflect.Method.invoke(Method.java:511)
11-23 12:53:51.415: W/System.err(551):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-23 12:53:51.425: W/System.err(551):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-23 12:53:51.425: W/System.err(551):  at dalvik.system.NativeStart.main(Native Method)
11-23 12:53:51.425: E/log_tag(551): Error parsing dataorg.json.JSONException: End of input at character 0 of 
11-23 12:53:51.575: D/gralloc_goldfish(551): Emulator without GPU emulation detected.
4

1 回答 1

1

此异常是由于在主线程上进行网络操作引起的。AsyncTask 应该可以帮助您解决问题。

这里有几个链接可以帮助你开始使用 AsyncTask:

于 2012-11-23T13:54:28.110 回答