Sending arguments via Android, php, and external java



這是一個AMP架構下(Apache, MySQL, php)與Android連接
經由Android傳遞數值經過php再到伺服器端執行java程式後再返回Android的架構

傳遞數值的關鍵步驟大概如下面所列出:
  1. (Android)以EditText取得使用者輸入的數值,並以HTTP POST方式傳輸給php
  2. (php)取得使用者裝置傳來的數值,將數值傳入Java程式並執行
  3. (Java)執行結束後將結果返回給php
  4. (php)取得結果後以json格式封裝,傳回給使用者裝置
  5. (Android)取得結果,解碼json

1.(Android)以EditText取得使用者輸入的數值,並以HTTP POST方式傳輸給php

取得使用者input
String input = editText.getText.toString
將input封裝到params這個List裡
params.add(new BasicNameValuePair("input", input));
用HTTP POST的方式送出資料
httpPost.setEntity(new UrlEncodedFormEntity(params));

2.(php)取得使用者裝置傳來的數值,將數值傳入Java程式並執行

取得使用者input
$input= $_POST[‘input’];
執行外部程式,並代入參數
exec(“java –jar path/to/file.jar input”, $output);

3.(Java)執行結束後將結果返回給php

執行Java
public static void main(String[] args){
String input = args[0]; (中間愛幹嘛就幹嘛) System.out.print(結果); }

4.(php)取得結果後以json格式封裝,傳回給使用者裝置

取得Java傳回來的結果(它是陣列)
$result = output[0];
以json格式封裝
die(json_encode($result));

5.(Android)取得結果,解碼json

取得InputStream的內容
Is=httpEntity.getContent();
最後就可以使用BufferReader與JSONObject的方法使用結果了!

沒有留言:

張貼留言