Android 端發送 HTTP GET 請求 → PHP 端接收參數查詢 MySQL → 回傳 JSON → Android 解析顯示。
function getids() {
$this->output->set_header('Content-Type: application/json; charset=utf-8');
$jsonstr = '';
$pname = $this->input->get('name');
$pcallid = $this->input->get('callid');
$pworkid = $this->input->get('workid');
$this->load->model('wireid_model');
$this->wireid_model->insertonly($pname, $pcallid);
if (empty($pname) && empty($pcallid) && empty($pworkid)) {
exit;
}
$sql = "SELECT * FROM twireid WHERE 1=1";
if ($pname) $sql .= " AND GNAME='{$pname}'";
elseif ($pcallid) $sql .= " AND GOLDCALLID='{$pcallid}'";
elseif ($pworkid) $sql .= " AND GCARDID='{$pworkid}'";
$data = $this->wireid_model->getsql($sql);
// JSON_FORCE_OBJECT 避免空陣列輸出為 []
echo json_encode($data->result_array(), JSON_FORCE_OBJECT);
}
Runnable doAskTask = new Runnable() {
@Override public void run() {
String ggname = etname.getText().toString();
String ggworkid = etworkid.getText().toString();
String ggcallid = etcallid.getText().toString();
String baseUrl = ConfidDatas.askbaseurl;
String query = "name=" + ggname + "&callid=" + ggcallid + "&workid=" + ggworkid;
HttpGet httpGet = new HttpGet(baseUrl + query);
HttpResponse response = null;
try {
response = new DefaultHttpClient().execute(httpGet);
} catch (Exception e) {
e.printStackTrace();
}
Message msg = new Message();
Bundle data = new Bundle();
if (response != null && response.getStatusLine().getStatusCode() == 200) {
try {
String result = EntityUtils.toString(response.getEntity());
data.putString("value", result);
data.putString("result", "isok");
} catch (Exception e) {
data.putString("result", "iserr");
}
} else {
data.putString("result", "iserr");
}
msg.setData(data);
handler.sendMessage(msg);
}
};
// 在 UI 執行緒啟動
new Thread(doAskTask).start();
NetworkOnMainThreadException。Handler 將結果傳回主執行緒更新 UI。Content-Type: application/json; charset=utf-8,避免中文亂碼。OkHttp / Retrofit 替代預設 HttpClient(已棄用)。URLEncoder.encode() 防止特殊字元錯誤。