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

Flutter调用WordPress REST API导致Android模拟器崩溃求助

解决Flutter Android模拟器调用WordPress REST API崩溃问题

先修正代码中的拼写错误

你的请求头里Content-Type存在拼写错误,正确写法应为application/json,这个问题可能导致服务端解析请求异常:

headers: <String, String>{
  'Authorization': basicAuth,
  'Content-Type': 'application/json; charset=UTF-8' // 修正拼写错误
});

针对SocketException(errno=103)的解决方案

该错误表示连接被中止,结合Android模拟器环境,按以下步骤排查修复:

1. 确认Android网络权限

在android/app/src/main/AndroidManifest.xml中添加必要的网络权限,放在<application>标签之前:

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

同时检查模拟器系统设置,确保没有禁用应用的网络访问权限,也未开启飞行模式。

2. 测试模拟器网络连通性

打开模拟器自带的浏览器,直接访问你的API地址https://myrestapii.liara.run/wp-json/wp/v2/posts/6:

  • 如果无法访问,说明模拟器网络本身存在问题,尝试重启模拟器或切换网络模式(如从Wi-Fi切换到虚拟蜂窝网络)。
  • 如果能正常返回数据,再回到Flutter应用进行调试。

3. 处理SSL证书信任问题

若你的WordPress站点使用自签名SSL证书,Android默认会拒绝连接,可通过自定义HttpClient临时信任证书(仅适用于测试环境):

import 'dart:io';
import 'package:http/http.dart' as http;

Future<Post> fetchPost() async {
  var basicAuth = 'Basic *****';
  // 创建信任所有证书的HttpClient(生产环境请勿使用)
  HttpClient client = HttpClient()
    ..badCertificateCallback = ((X509Certificate cert, String host, int port) => true);
  var response = await http.get(
    Uri.https('myrestapii.liara.run', 'wp-json/wp/v2/posts/6'),
    headers: <String, String>{
      'Authorization': basicAuth,
      'Content-Type': 'application/json; charset=UTF-8'
    },
  ).timeout(const Duration(seconds: 10)); // 添加超时限制,避免应用卡住
  if (response.statusCode == 200) {
    return Post.fromjson(jsonDecode(response.body));
  } else {
    throw Exception('failed to load post!');
  }
}

生产环境请配置合法的SSL证书,避免安全风险。

4. 捕获异常避免应用崩溃

原代码未处理网络异常,导致未捕获的Exception直接引发崩溃。在调用fetchPost的逻辑中添加try-catch:

try {
  Post post = await fetchPost();
  // 处理获取到的数据
} catch (e) {
  print('加载失败:$e');
  // 给用户显示友好的错误提示
}

5. 验证Basic Auth的正确性

确保basicAuth是正确的Base64编码字符串,格式为Basic 用户名:密码的Base64编码,可通过在线工具验证编码是否正确,避免因认证失败导致服务端中止连接。

关于crash_dump权限提示

failed to attach to thread 182: Permission denied属于调试工具的权限问题,和应用崩溃本身无关,解决上述网络问题后该提示会自动消失。

内容的提问来源于stack exchange,提问作者Hana.HD

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:23:18