this exampleのような名前の値の組み合わせでMySQLデータベースをAndroidから照会できる例がたくさんありますが、うまく動作するようになっています。MySQL、Android、PHPの問題
しかし、私はそれをもっと簡単にしたいと思っています。それが問題にぶつかるときです。以下のクエリでテーブル全体を返すだけです。
<?php
mysql_connect("localhost","username","pw");
mysql_select_db("db");
$q=mysql_query("SELECT field FROM table");
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
mysql_close();
?>
主な違いは、$ _REQUEST行が使用されていないことです。 PHPコードは、Webブラウザで実行すると、それ自体で正常に動作します。
問題は、以下のAndroidコードで発生します。最終的なhttpclient.execute行を実行すると失敗します。
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://site.com/db.php");
//httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
エラーは、android.os.NetworkOnMainThreadExceptionです。
PHPスクリプトが受け取る必要がある実際のnameValuePairsがないので、ここにsetEntityの部分が必要かどうか分かりません。私は上記のようにそれをコメントアウトしていくつかのダミーの値のペアを設定しようとしましたが、どちらにも接続しません。私はsetEntityの部分がどこに問題があるのだろうと思う。この場合、どのようにエンティティを設定しますか?それとも別の問題ですか?ありがとう。
更新: 以下のようにHttpPostをHttpGetに変更しようとしましたが、同じ問題が発生しました。
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://site.com/db.php");
//httpget.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httpget);
あなたはどのような問題に取り組んでいますか? – dldnh
"HttpResponse response = httpclient.execute(httppost);" Javaコード内の行が失敗します。質問を編集して明確にするようにします。 – mattboy
HttpGetを使用する必要があるときにHttpPostを使用する理由 – Jens