1

これがAndroidで通信するための良い方法なのか、それともより安全でより良い方法があるのか​​ 疑問に思っていましたか?

  btnInsert.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) 
        {
            //Create the request
            **String url** = "http://10.0.2.2:80/practice/mysql_demo/inserting.php?";
            url = url + "txtName=" + txtName.getText().toString() + "&";
            url = url + "txtAge=" + txtAge.getText().toString() + "&";
            url = url + "txtAddress=" + txtAddress.getText().toString() + "&";
            url = url + "txtContact=" + txtContact.getText().toString() + "&";
            url = url + "txtOtherInformation=" + txtOtherInformation.getText().toString();

            **executeQuery(url)**;
            selectRecords(lstStudents);
        }
});
**public void executeQuery(String url)**
{
    //execute the URL, and get the result
    try
    {
        HttpClient http = new DefaultHttpClient();
        HttpGet http_get = new HttpGet(url);
        HttpResponse http_response = http.execute(http_get);
        HttpEntity http_entity = http_response.getEntity();
        BufferedReader br = new BufferedReader(
                new InputStreamReader(http_entity.getContent()));
        String result = br.readLine();

        Toast.makeText(PHPDemo.this, result, Toast.LENGTH_LONG).show();
    }
    catch (Exception ex)
    {
        Toast.makeText(PHPDemo.this, ex.getMessage(), Toast.LENGTH_LONG).show();
    }
}
4

2 に答える 2

1

ネットワーク関連の操作にはthreadまたはを使用する必要があります。Asynctask

 HttpResponse http_response = http.execute(http_get);  

あなたが得るハニカムポストNetworkOnMainThreadException。スレッドを使用するAsyncTaskか使用します`。

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

非同期タスクの場合

http://developer.android.com/reference/android/os/AsyncTask.html

注: バックグラウンド スレッドから ui を更新することはできません。ui スレッドで ui を更新できます。

于 2013-07-07T05:51:08.713 に答える
0

@Raghunandanは正しいです。それに加えて、クエリ パラメータの名前と値を個別に URL エンコードすることをお勧めします。URLEncoder.encode"UTF-8"エンコーディングとして使用できます。

より良い方法があるかどうか尋ねたので:

新しい Android リリースでは、Apache の HttpClient を介した HttpUrlConnectionを検討することをお勧めします。

また、Volley や OkHttp などのAndroid ネットワーキング ライブラリを確認することもできます。

于 2013-07-07T18:06:29.863 に答える