3

サーバーで特定のphp関数を呼び出し、いくつかのパラメーターを送信したい。これまで、HttpClient を使用して php ファイルを開き、Json へのデータ転送を実行して、それをアプリで表示できることを達成しました。それで、特定の関数を呼び出してパラメーターを送信できるようにしたいのですが、どうすればいいですか?? 申し訳ありませんが、Android からその関数を呼び出す必要があることを知りませんでした。

ここにいくつかのコード:

try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/posloviPodaci/index.php");
            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();

            is = entity.getContent();

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

        // Convert response to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,   "iso-8859-1"), 8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");

            String line = "0";
            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());
        }

        // Parsing data
        JSONArray jArray;
        try {
            jArray = new JSONArray(result);
            JSONObject json_data = null;

            items = new String[jArray.length()];

            for(int i = 0; i < jArray.length(); i++) {
                json_data = jArray.getJSONObject(i);
                items[i] = json_data.getString("naziv");
            }

        } catch (Exception e) {
            // TODO: handle exception
        }

前もってありがとう、ウルフ。

4

2 に答える 2

1

CakePHPなどのMVCフレームワークを使用している場合は、必要なJSONを出力する関数へのルートを作成するだけです。

それ以外の場合は、index.phpの上部にある次のような単純なものを利用できます。

<?php
   function foo($bar) { echo $bar; }
   if(isset($_GET['action']) && (strlen($_GET['action']) > 0)) {
      switch($_GET['action']) :
         case 'whatever':
            echo json_encode(array('some data'));
            break;
         case 'rah':
            foo(htmlentities($_GET['bar']));
            break;
      endswitch;
      exit; # stop execution.
   }
?>

これにより、アクションのパラメーターを使用してURLを呼び出すことができます。

http://10.0.2.2/posloviPodaci/index.php?action=whatever

http://10.0.2.2/posloviPodaci/index.php?action=rah&bar=test

より機密性の高いデータを渡す必要がある場合は、$ _ POSTを使用し、何らかの暗号化を利用することをお勧めします。

于 2012-04-24T16:30:06.413 に答える
-1

PHP側で処理できます。command というフィールドとおそらく引数のリストを持つ Json オブジェクトを作成します。

json をデコードした後、php 側で次のようにします。

if($obj.command == "foo"){
  foo($obj.arg[0],$obj.arg[1]);

}
于 2012-04-24T16:34:11.653 に答える