ionic native http get return typeError - 无法读取未定义的属性“匹配”

Posted

技术标签:

【中文标题】ionic native http get return typeError - 无法读取未定义的属性“匹配”【英文标题】:ionic native http get return typeError - Cannot read property 'match' of undefined 【发布时间】:2018-04-24 06:01:49 【问题描述】:

几分钟前,我在最新的 Ionic 中创建了一个新项目。我导入了

import  HTTP  from '@ionic-native/http'

然后我尝试将 GET 请求发送到我的后端应用程序。

meetingsUrl: 'http://localhost:8080/test/all';
 this.http.useBasicAuth('login','password');
    this.http.get(this.meetingsUrl,, 'Content-Type':'application/json')
      .then(data => 
        console.log(data);
      )
      .catch(error => 
        console.log(error);
      );

我正在使用“ionic cordova run browser”命令。我试过在android上运行,但效果是一样的。

在每种情况下我都会出错:

TypeError: Cannot read property 'match' of undefined
    at getMatchingHostHeaders (advanced-http.js:118)
    at getMergedHeaders (advanced-http.js:126)
    at Object.get (advanced-http.js:210)
    at callCordovaPlugin (plugin.js:110)
    at plugin.js:136
    at util.js:22
    at new t (polyfills.js:3)
    at tryNativePromise (util.js:21)
    at getPromise (util.js:29)
    at wrapPromise (plugin.js:119)

【问题讨论】:

【参考方案1】:

你做错了。您需要设置headers 详细信息。

doc

get(url, parameters, headers)

例如from the doc:

    this.http.get('https://google.com/', 
      id: 12,
      message: 'test'
    ,  Authorization: 'OAuth2: token' ).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);
  );

【讨论】:

我有标题:Content-Type':'application/json.但我想使用带有登录名和密码的基本身份验证,而不是 oauth2 这只是文档的一个示例。请参阅:***.com/a/34465070/1077309【参考方案2】:

登录请求示例,其中AppSignIn 是类似http://www.example.com/ 的URL

public signInRequest(login:Login):Promise<OAuth> 
        let params:URLSearchParams = new URLSearchParams();
        params.set('userId', login.userId.toString());
        params.set('password', login.password.toString());
        let requestOption:RequestOptionsArgs = 
            search: params
        ;
        return this.http
            .get(AppSignIn, requestOption)
            .toPromise()
            .then(this.extractData)
      

【讨论】:

【参考方案3】:

试试:

doLogin()

   let base64Auth = this.http.getBasicAuthHeader("username", "password"); // return like Authorization: "Basic base64UsernameAndPassword"  

   this.http.get("url", , base64Auth).then((res)=>
      //success callback 
      console.log(res); 
   ).catch((err)=>
      //error callback 
      console.log(err); 
   ); 


【讨论】:

以上是关于ionic native http get return typeError - 无法读取未定义的属性“匹配”的主要内容,如果未能解决你的问题,请参考以下文章

ionic-native/http 发出错误“NullInjectorError: No provider for HTTP!”

Ionic Native HTTP 不适用于 Android 9 (Pie) 及更高版本?

离子应用程序在另一个HTTP GET中使用HTTP GET崩溃

调用GET HTTP时android上的ionic3错误

ionic-native-transitions调用原生页面切换实现ionic路由切换

ionic4 ionic-native列表