我在Android上(使用React Apollo)向我的API发出获取请求时遇到了一个奇怪的问题。在开发版本和发布版本中,获取都不起作用。只要我打开React Native编译器并启用 Enable Network Inspect,请求就可以工作。
我不知道如何调试的请求,因为他们没有显示在调试器没有网络检查启用。
有什么想法我怎么能找到错误,或者你们中的任何人遇到了同样的问题?
我在Android上(使用React Apollo)向我的API发出获取请求时遇到了一个奇怪的问题。在开发版本和发布版本中,获取都不起作用。只要我打开React Native编译器并启用 Enable Network Inspect,请求就可以工作。
我不知道如何调试的请求,因为他们没有显示在调试器没有网络检查启用。
有什么想法我怎么能找到错误,或者你们中的任何人遇到了同样的问题?
6条答案
按热度按时间qgzx9mmu1#
可能是API问题。我以前遇到过同样的问题。React-native-debugger处理URL重定向。当你使用react-native-debugger时,会在http请求中添加一些额外的逻辑。验证请求,http://https://,header,cookie等。
(Postman与react-native-debugger相同)
gdx19jrr2#
尝试将android:usesCleartextTraffic=“true”放入android清单文件中
https://stackoverflow.com/a/61280828/8613355
xzlaal3s3#
作为默认在 AndroidManifest.xml 在Android目标的Android文件夹的调试目录+28水平android:usesCleartextTraffic=“true”被放置,但应用程序的发布模式,如果你的Android目标版本>= 28和你的目标Web服务没有SSL你应该添加android:usesCleartextTraffic=“true”手动在 ./android/app/src/main 中 AndroidManifest.xml 的应用程序和问题将解决。
dxpyg8gm4#
以下事情可以帮助:
1.来自服务器的CROS策略错误。请与您的后端团队联系。
1.如果您使用的是http url。您需要在manifest中的应用程序级别使用usesCleartextTraffic = true。但使用usesCleartextTraffic = true被视为漏洞之一。
1.如果你想调试axios请求,你需要使用axios拦截器https://axios-http.com/docs/interceptors
xfyts7mz5#
这大概是因为,当问到这个问题时,React Native不支持
fetch
,如果我没有弄错的话-并且在当时调试时,你必须注意一些奇怪的事情,例如调试器可以访问实际React Native运行时中不可用的对象/方法。当调试器被连接时,代码在调试器中而不是在实际设备上执行,从而产生这种效果。
您可以在这里看到,
fetch
在2018年的版本中需要polyfill。我们不得不处理这种情况下的其他挫折,比如在第一次连接调试器时,我们的应用程序的身份验证需要重新验证。
w8f9ii696#
同样的问题我也只在android平台上运行,在iOS上运行良好**。所以,对我来说,下面的方法运行良好**(React native版本0.71)**,
我需要创建证书为我的API域使用openssl命令如下,
字符串
注意:您需要将your_API_domain替换为您在应用中实际使用的API域
然后使用上面的命令创建证书,你需要像下面的图片所示的地方通过创建原始目录下res目录,
的数据