You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过POST方法将Android设备信息发送至PHP页面?求可行示例

简单可行的Android POST发送设备信息到PHP实现方案

我来给你一个亲测有效的实现方案,分Android端和PHP端两部分,逻辑清晰好上手~


Android 端实现

咱们用OkHttp来做网络请求,它比原生HttpURLConnection简洁太多,现在大部分Android项目都在用它。

1. 先加依赖

打开你的app/build.gradle,在dependencies块里添加OkHttp的依赖:

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
}

同步一下gradle就可以用了。

2. 获取设备信息 + 发送POST请求

直接上完整代码,你可以把这段逻辑放在按钮点击事件或者合适的异步触发点里:

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // 点击按钮触发发送请求
    public void sendDeviceInfo(View view) {
        // 1. 先把你需要的设备信息都取出来
        String serial = Build.SERIAL;
        String board = Build.BOARD;
        String display = Build.DISPLAY;
        String model = Build.MODEL;
        String id = Build.ID;
        String manufacturer = Build.MANUFACTURER;
        String brand = Build.BRAND;
        String type = Build.TYPE;
        String user = Build.USER;

        // 2. 必须在子线程发网络请求!Android不让在主线程搞这个
        new Thread(() -> {
            OkHttpClient client = new OkHttpClient();

            // 构建POST表单参数,键值对对应PHP端要接收的字段
            RequestBody formBody = new FormBody.Builder()
                    .add("serial", serial)
                    .add("board", board)
                    .add("display", display)
                    .add("model", model)
                    .add("id", id)
                    .add("manufacturer", manufacturer)
                    .add("brand", brand)
                    .add("type", type)
                    .add("user", user)
                    .build();

            // 替换成你的PHP接口地址,比如本地测试用http://10.0.2.2/xxx.php
            Request request = new Request.Builder()
                    .url("http://你的服务器地址/device_info.php")
                    .post(formBody)
                    .build();

            try {
                Response response = client.newCall(request).execute();
                // 请求成功的话,回到主线程弹个提示
                if (response.isSuccessful() && response.body() != null) {
                    String result = response.body().string();
                    runOnUiThread(() -> Toast.makeText(MainActivity.this, "发送成功:" + result, Toast.LENGTH_SHORT).show());
                } else {
                    runOnUiThread(() -> Toast.makeText(MainActivity.this, "发送失败", Toast.LENGTH_SHORT).show());
                }
            } catch (IOException e) {
                e.printStackTrace();
                runOnUiThread(() -> Toast.makeText(MainActivity.this, "网络异常:" + e.getMessage(), Toast.LENGTH_SHORT).show());
            }
        }).start();
    }
}

3. 别忘了加网络权限

在AndroidManifest.xml里添加上网权限,不然请求会失败:

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

PHP 端接收代码

创建一个device_info.php文件,放到你的服务器上,代码如下:

<?php
// 用??处理参数,避免没收到参数报错
$serial = $_POST['serial'] ?? '未知';
$board = $_POST['board'] ?? '未知';
$display = $_POST['display'] ?? '未知';
$model = $_POST['model'] ?? '未知';
$id = $_POST['id'] ?? '未知';
$manufacturer = $_POST['manufacturer'] ?? '未知';
$brand = $_POST['brand'] ?? '未知';
$type = $_POST['type'] ?? '未知';
$user = $_POST['user'] ?? '未知';

// 这里可以把数据存数据库,先简单返回成功信息给Android端
$response = array(
    'status' => 'success',
    'msg' => '设备信息已接收',
    'data' => array(
        'serial' => $serial,
        'board' => $board,
        'display' => $display,
        'model' => $model,
        'id' => $id,
        'manufacturer' => $manufacturer,
        'brand' => $brand,
        'type' => $type,
        'user' => $user
    )
);

// 返回JSON格式的响应,方便Android解析
header('Content-Type: application/json');
echo json_encode($response);
?>

小提醒

  • 如果是用Android模拟器测试本地服务器,记得把http://localhost换成http://10.0.2.2(模拟器的本地主机映射地址)。
  • 要是不想用OkHttp,也可以用原生HttpURLConnection,但代码会繁琐很多,OkHttp确实是目前最省心的选择。

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:05:27