dart http post请求在apk中不工作,但在调试模式下工作

utugiqy6  于 2023-04-27  发布在  其他
关注(0)|答案(2)|浏览(127)

我正在开发一个CRUD应用程序。**问题:**当我在模拟器或物理设备上调试我的应用程序时,一切都运行得很好,但当我创建APK并在移动的设备上运行它时,除了post请求外,所有请求都运行得很好。
在我搜索的时候,我已经给了互联网许可。

我的发帖请求

await http.post(
  Uri.parse('https://myap'),
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': 'Bearer ${token}',
  },
  body: jsonBody,
).then(
  (response) {
    if (response.statusCode == 201) {
      navigatorKey.currentState?.pushNamed('home');
    }
 
  },
).catchError(
  (e) {
        print(e);
  },
);

在apk、模拟器和物理设备上都能正常使用

Future fetchFeed() async {
    await http.get(Uri.parse('https://myapi'), headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Authorization': 'Bearer $token',
    }).then((response) {
      if (response.statusCode == 200) {
        print(response.statusCode);
      }
    }).catchError(
      (e) {
          print(e);
      },
    );
  }
p3rjfoxz

p3rjfoxz1#

如果它在调试模式下工作正常,但在发布(apk)模式下工作不正常,则manifest.xml文件中可能缺少Internet权限。
Android应用必须在"android\app\src"的Android清单(AndroidManifest.xml)中声明其对互联网的使用:
在这里你会发现3个文件夹,将这个片段添加到每个文件夹中的AndroidManifest

<manifest xmlns:android...>
 ...
 <uses-permission android:name="android.permission.INTERNET" />
 <application ...
</manifest>
jtjikinw

jtjikinw2#

错误在jsonBody中。它不认为它是map,所以它仍然在尝试发送请求,
试着把:

body : { 
       'key1' : '${jsonBody['key1']}',
       'key2' : '${jsonBody['key2']}',
       'key3' : '${jsonBody['key3']}',
   
    }

它将工作,然后你可以离开它,或者你可以搜索什么是jsonBody的问题

相关问题