安卓应用访问服务器时,需通过IP地址或域名指定目标位置,并搭配端口号确定具体服务,以下是核心要素:
类型 | 说明 |
---|---|
IP地址 | 服务器在网络中的唯一数字标识(如 168.1.1 ),适合内网或固定服务器。 |
域名 | 便于记忆的网址(如 api.example.com ),需通过DNS解析为IP地址。 |
端口号 | 区分不同服务(如HTTP默认80,HTTPS默认443),自定义端口需在服务器开放。 |
协议 | http:// (明文传输)或 https:// (加密传输),影响数据安全性。 |
场景 | 配置方式 |
---|---|
开发环境 | 本地IP(如 168.0.100:8080 )或局域网域名(需配置 hosts 文件) |
生产环境 | 公网域名(如 api.myapp.com )必须使用HTTPS(需备案域名并申请SSL证书) |
// 直接写死(不推荐,生产环境需避免) String serverUrl = "https://api.example.com/"; // 通过配置文件读取(推荐) String serverUrl = getResources().getString(R.string.server_url);
原因 | 解决方案 |
---|---|
防火墙拦截 | 检查服务器安全组规则,开放对应端口(如80/443)。 |
域名未解析 | 确保域名已绑定服务器IP,且客户端网络正常。 |
HTTPS证书问题 | 使用可信CA签发的证书,或客户端忽略证书校验(仅限开发环境,生产环境必须合规)。 |
若服务器IP可能变动,可使用动态域名系统(DDNS),
避免硬编码敏感信息
res/values/strings.xml
)强制HTTPS
解答:
ping
命令(如 ping api.example.com
)检查域名解析和网络连通性。 telnet
测试端口(如 telnet api.example.com 443
),若失败则可能是防火墙或服务未启动。 IOException
),判断是否为网络问题或服务器错误。解答:
res/values
目录下创建不同配置文件(如config_dev.xml
、config_prod.xml
),通过构建参数选择加载。 BuildConfig
中定义SERVER_URL
),或通过命令行参数传递。