0

これが私のコードですサーバーデータベースに接続しようとしていますが、例外socketexception network nt reachableを与えていますが、ローカルホストで機能していますplsはdisコードの問題です

package com.example.test2;

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.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
//import android.os.StrictMode;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */

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

    public void getData(){
        String result = "";
        InputStream isr = null;
        try{
            HttpClient httpclient = new DefaultHttpClient();
            Toast.makeText(getApplicationContext()  , "1"   ,Toast.LENGTH_SHORT).show();

            HttpPost httppost = new HttpPost("http://localhost/xampp/connect.php");
            String str=httppost.toString();//YOUR PHP SCRIPT ADDRESS 
            Toast.makeText(getApplicationContext()  , str   ,Toast.LENGTH_LONG).show();

            HttpResponse response = httpclient.execute(httppost);

            Toast.makeText(getApplicationContext()  , "3"   ,Toast.LENGTH_SHORT).show();

            HttpEntity entity = response.getEntity();
            isr = entity.getContent();
    }
    catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
            resultView.setText("Couldnt connect to database");
    }
    //convert response to string
    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");
            }
            isr.close();

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

    //parse json data
   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")+" \nNAME : "+json.getString("name")+"\n\n";
       }

       resultView.setText(s);

   } catch (Exception e) {
    // TODO: handle exception
       Log.e("log_tag", "Error Parsing Data "+e.toString());
   }

    }


}

インターネットの許可を取得したとしても、まだ許可が必要です

4

3 に答える 3

2
"http://localhost/xampp/connect.php" 

あなたのIPアドレスをそこに置くのではなく、ローカルホストを置くことはできません。

于 2013-08-19T22:09:13.990 に答える
1

問題はここにあります:

HttpPost httppost = new HttpPost("http://localhost/xampp/connect.php");

次のように、localhost を IP アドレスに変更します。

HttpPost httppost = new HttpPost("your ip address /connect.php");// where your ip address will be something like 192.168.14.4

IP アドレスを取得するには、[スタート] > [cmd] と入力し、表示される画面で [ipconfig] と入力します。WIFI に接続している場合は、IPV4 の WIFI の下を見てください。また、必ずサーバーをオンラインにしてください。

于 2013-08-19T04:38:26.520 に答える
0

getData() を Thread に入れると問題は解決します。

例:

new Thread(new Runnable(){
    @Override
    public void run() {
        getData(); // If you want to update UI, please put Update UI into runOnUIThread
    }
});

しかし、この方法を使用することはお勧めしません。AsyncTask を使用して解決してください。

この質問の私の答えをもっと読んでください: AsyncTask と Activity の関係は何ですか?

于 2013-08-19T03:39:25.100 に答える