Http.get()工作正常,但在Ionic 4中无法在build(Release / Debug)中工作

时间:2019-12-12 14:21:38

标签: angular typescript http ionic-framework ionic4

我正在尝试从一个简单的api获取数据,它在离子服务(浏览器)中可以正常工作,但是当我构建应用程序时,http调用不起作用。我的代码是

df1 = (pd.DataFrame(df.age.values.tolist(), index=df.index)
         .rename(columns = lambda x: f'age{x+1}'))

请帮助解决此问题。

5 个答案:

答案 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;

docs

答案 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应用程序上对我有效。

enter image description here

<?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。