0

Android デバイスからMySQL database. データベースが更新されていないようProgressDialogで、私の中でAsyncTaskは完了していません。

だからここに私のPHPスクリプトがあります

 <?php 
   mysql_connect("localhost","$username","$password") or die(mysql_error());
   mysql_select_db("databaseName");

   $pcn =   $_POST['PCN'];
   $date = $_POST['Date'] ;

   $query_add="INSERT INTO data (`pcn`,`date`) VALUES ('$pcn','$date')";
   $query_exec=mysql_query($query_add) or die(mysql_error()); 
   mysql_close()
 ?>

次に私のJavaコード:

protected void onPreExecute() {
      progressDialog=ProgressDialog.show(context,"Please Wait..","Sending data to database",false);
    }

  @Override
  protected String doInBackground(String... params) {


      try {
          httpclient = new DefaultHttpClient();
          httppost = new HttpPost("http://localhost/index.php");
          ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
          postParameters.add(new BasicNameValuePair("PCN", pcn));
          postParameters.add(new BasicNameValuePair("Date", date));

          httppost.setEntity(new UrlEncodedFormEntity(postParameters));                   
          HttpResponse response = httpclient.execute(httppost);
          Log.i("postData", response.getStatusLine().toString());
       }
       catch(Exception e)
       {
            Log.e(TAG, "Error:  "+e.toString());
       }  

    return "";
}

protected void onPostExecute(String result) {

        progressDialog.dismiss(); 
        Toast.makeText(context, "Finished", Toast.LENGTH_LONG).show(); 

}

私のマニフェストファイルで:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

これは LogCat からの出力です

07-04 12:52:34.025: E/SendToServer(15167): Error:  org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused

使用できない場所をいくつか読みましhttp://localhostたが、試しhttp://10.0.0.2てみるとうまくいくはずです。

これを行う方法がわかりません。誰かが私を正しい方向に向けることができますか?

アップデート

10.0.2.2LogCatの代わりに試してみると、次のようにLocalhost出力されます。

Error:  java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=10.0.2.2

更新 2

never finishを使用するとhttp://10.0.2.2progressdialoglogcat も例外を表示しません。

更新 3

アプリがデータベースを更新しない理由はわかっていると思います。私の電話は、私のワークステーションとは別のワイヤレス ネットワークにあります..

4

3 に答える 3

1

あなたの問題はこの行です、

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

Android は URL の localhost を認識しません。

localhostの代わりに、システムの静的 IPまたは10.0.2.2を使用します。

于 2012-07-04T10:58:40.030 に答える
0

「10.0.2.2」を使用しているときに発生するエラーは、を使用10.0.0.2しなければならないときに使用しているときに最も一般的に発生しますhttp://10.0.2.2

使用していることを確認してください:

httppost = new HttpPost("http://10.0.2.2/index.php");

うまくいけば、これはあなたの問題を解決するでしょう。

于 2012-07-04T11:12:53.783 に答える
0

Android はlocalhostを使用しません。10.0.2.2を試してください。

詳細はこちら

于 2012-07-04T11:05:00.817 に答える