首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Android 串接 PHP 後端:透過 HTTP GET 獲取 JSON 資料完整範例

     編輯:PHP 綜合知識

後端 PHP 程式(index.php)

<?php
header('Content-Type: application/json; charset=utf-8');

$data = array(
    'username' => '楊鑄',
    'password' => '123456', // 實務切勿回傳密碼,此處僅示範
    'user_id' => 1
);

echo json_encode($data, JSON_UNESCAPED_UNICODE);

Android 客戶端程式(Java)

private void startUrlCheck(String username, String password) {
    HttpClient client = new DefaultHttpClient();
    StringBuilder builder = new StringBuilder();
    // 10.0.2.2 為 Android 模擬器訪問宿主機 localhost 的特殊 IP
    HttpGet myget = new HttpGet("https://10.0.2.2/Android/index.php");

    try {
        HttpResponse response = client.execute(myget);
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(response.getEntity().getContent()));

        String line;
        while ((line = reader.readLine()) != null) {
            builder.append(line);
        }

        JSONObject jsonObject = new JSONObject(builder.toString());
        String re_username = jsonObject.getString("username");
        String re_password = jsonObject.getString("password");
        int re_user_id = jsonObject.getInt("user_id");

        setTitle("用戶ID: " + re_user_id);
        Log.v("url response", "username=" + re_username);
        Log.v("url response", "password=" + re_password);

    } catch (Exception e) {
        Log.v("url response", "false");
        e.printStackTrace();
    }
}

關鍵配置:AndroidManifest.xml 權限

若出現 java.net.SocketException: Permission denied,請在 </manifest> 前加入:

<uses-permission android:name="android.permission.INTERNET" />

進階建議:生產環境最佳實踐

  • 棄用 HttpClient:Android 6.0+ 移除,改用 HttpURLConnection、OkHttp 或 Retrofit。
  • 使用 HTTPS:保護傳輸資料,避免中間人攻擊。
  • 勿傳輸敏感資料:密碼應由後端驗證並回傳 Token,絕不在 API 回傳明文密碼。
  • 錯誤處理:區分網路錯誤、HTTP 錯誤碼、JSON 解析錯誤,給予用戶友善提示。
  • 非同步執行:網路請求必須在背景執行緒,避免 ANR(主執行緒阻塞)。

現代寫法範例

// OkHttp + Coroutines (Kotlin)
suspend fun fetchUser(): User? = withContext(Dispatchers.IO) {
    val request = Request.Builder()
        .url("https://api.example.com/user")
        .build()
    client.newCall(request).execute().use { response ->
        if (response.isSuccessful) {
            val json = response.body?.string() ?: return@withContext null
            Json.decodeFromString(User.serializer(), json)
        } else null
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved