我正在尝试从一个简单的api获取数据,它在离子服务(浏览器)中可以正常工作,但是当我构建应用程序时,http调用不起作用。我的代码是
df1 = (pd.DataFrame(df.age.values.tolist(), index=df.index)
.rename(columns = lambda x: f'age{x+1}'))
请帮助解决此问题。
答案 0 :(得分:3)
离子 5 更新
我在 Ionic 5 中遇到了同样的问题,但由于 HttpClient 没有捕捉到错误(我只是返回了一个未知的失败响应)而变得更加复杂。
为了确认这确实是一个明文错误,我首先必须为 Native HTTP 插件更改 HttpClient。
在 Ionic 5 中,您现在可以在capacitor.config.json 文件中启用明文或用 .ts 版本替换现有的 json 文件:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.company.appname',
appName: 'My Capacitor App',
webDir: 'www',
server: {
'cleartext': true
}
};
export default config;
答案 1 :(得分:2)
我猜你是因为android改变了它的http架构而得到的。
要使其在Android上运行,请转到您的项目根文件夹。
yourAppFolder>资源> android> xml> network_security_config.xml 将您的网络安全配置更改为无效代码。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
答案 2 :(得分:1)
我认为您可以将Native HTTP plugin用于设备用例:
ionic cordova plugin add cordova-plugin-advanced-http
npm install @ionic-native/http
文档中的用法:
import { HTTP } from '@ionic-native/http/ngx';
constructor(private http: HTTP) {}
...
this.http.get('http://ionic.io', {}, {})
.then(data => {
console.log(data.status);
console.log(data.data); // data received by server
console.log(data.headers);
})
.catch(error => {
console.log(error.status);
console.log(error.error); // error message as string
console.log(error.headers);
});
答案 3 :(得分:1)
这在Ionic 4应用程序上对我有效。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
答案 4 :(得分:0)
这些答案中的大多数虽然可以工作,但不是安全的选择,因为它们会打开非 https 流量。
明文仅用于实时重新加载的本地测试,不应用于生产应用。
真正的解决方案是使用 HTTPS 端点或通过让我们加密在您自己的服务器上设置 HTTPS。