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

如何创建API检测真实Android设备应用?真机连接本地API失败求助

Alright, let's tackle your connection issues first, then walk through creating a test API for real Android devices.

Connection Failure Troubleshooting

First, let's clarify why each of your attempts failed:

  • 10.0.2.2: This is a special alias exclusive to Android emulators—it maps directly to your host machine's 127.0.0.1 (loopback address). Real Android devices have no idea what this address means, so it will always fail outside the emulator.
  • 127.0.0.1: On a real device, this points to the device itself, not your local server. Unless you're running the API directly on the phone, this will never connect to your host machine.
  • 192.168.0.100: This should work if set up correctly, but there are a few common blockers. Let's fix them one by one:

Fixes for 192.168.0.100 Connection Issues

  • Ensure same network: Your real Android device and the machine running your local server must be on the same Wi-Fi network (or wired to the same router). Double-check both devices are connected to the same LAN segment.
  • Check server binding: If you're using PHP's built-in server, start it with php -S 0.0.0.0:80 (replace 80 with your port) instead of php -S 127.0.0.1:80. Binding to 0.0.0.0 allows the server to accept connections from all network interfaces, not just the local machine.
  • Firewall/security group rules: Your host machine's firewall might be blocking incoming connections on the port your API uses. Add an exception for your server port (e.g., 80, 8080) to allow LAN traffic.
  • Android HTTP restrictions (API 28+): Android 9 (Pie) and above block plain HTTP requests by default. To bypass this for local testing:
    1. Create a res/xml/network_security_config.xml file with:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <domain-config cleartextTrafficPermitted="true">
              <domain includeSubdomains="true">192.168.0.100</domain>
          </domain-config>
      </network-security-config>
      
    2. Add this to your AndroidManifest.xml under the <application> tag:
      android:networkSecurityConfig="@xml/network_security_config"
      
  • App permissions: Verify your app has the necessary network permissions in AndroidManifest.xml:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
Creating a Test API for Real Device Validation

Creating a simple test API is straightforward—here's a quick PHP example that returns connection status and useful device details:

Step 1: Create the API file (test_api.php)

<?php
// Set response content type to JSON
header("Content-Type: application/json");

// Gather connection and server details
$response = [
    "status" => "success",
    "message" => "Successfully connected from real device!",
    "client_ip" => $_SERVER['REMOTE_ADDR'], // The device's LAN IP address
    "server_time" => date("Y-m-d H:i:s")
];

// Return the formatted JSON response
echo json_encode($response);
?>

Step 2: Test the API

  1. Start your local server with the correct binding (e.g., php -S 0.0.0.0:80 in the directory where test_api.php is located).
  2. On your real Android device, open a browser and navigate to http://192.168.0.100/test_api.php (replace with your server's actual LAN IP and port if needed).
  3. If you see a JSON response with status: success, the API is working and accessible from your device. You can now call this endpoint from your Android app to validate connectivity.

Bonus: HTTPS for Production (Optional)

For real-world use, you should use HTTPS. You can get a free SSL certificate from Let's Encrypt, or create a self-signed certificate for local testing (note: you'll need to install the self-signed cert on your Android device to trust it).

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:19:58