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崩溃