2017-06-20 79 views
0

我需要使用基本身份验证进行http获取请求,但我不知道如何。我正在使用ionic2,角色为& typescript。 我的代码:如何在Ionic内的http获取请求中使用useBasicAuth?

this.http.get("http://address") 
    .map(res => res.json()) 
    .subscribe(data =>{ 
     console.log(data); 
    }); 

从离子文档我看到我需要什么,但我是新来的这些技术,我不能够使用它:useBasicAuth(username, password)

我已经尝试了这些解决方案,但它没有工作:Angular 2- Http POST request parameters

编辑

我一直在努力之下

012码
let headers = new Headers(); 
headers.append('Content-Type', 'application/json'); 
headers.append('Authorization', 'Basic xxxxxxx='); 

let options = new RequestOptions({ headers: headers }); 

this.http.get("http://VLCwebServerAddress",options) 

甚至

this.http.get("http://VLCwebServerAddress",headers)

如果第二个参数是我得到的回应401,所以验证失败。

如果第二个参数是选项我得到Response for preflight has invalid HTTP status code 501其中I've read它与服务器端的CORS有关。

回答

0

我终于明白了。我是混合角和Ionic2-cordova库。

我没有注意到,我不得不使用import { HTTP } from '@ionic-native/http';

而是采用import { Http, HttpModule } from '@angular/http';

(这是我在教程和其他问题看到的代码)然后,我能够使用列出的所有方法http documentation for Ionic2

请记住该插件在运行时不起作用ionic serve yourApp在浏览器上,但在真实设备上运行应用程序时。

我重新检查并尝试了多次使用http角度库进行请求,但只要向请求中添加了额外内容(如标头),就会停止工作(不确定是否因为服务器) 。谢谢你的答案。

0

当登录成功时,您需要将用户名和令牌存储在sessionstorage或localstorage中。那么您需要将它们发送到您的请求的标题中。

getUserByName(username: string) { 
let url="http://localhost:8088/rest/user/userName"; 
let header=new Headers({'Content-Type': 'application/json', 'Authorization': localStorage.getItem("token")}); 

return this.http.post(url, username, {headers: header}); 

}

+0

我“找不到getUserByName”如果我尝试你的代码。 我想知道如何使用文档中定义的“getBasicAuthHeader(username,password)”,但没有使用示例。 –

+0

你对基本编程有什么想法吗?我写的代码需要保持服务。 –

+0

我很容易被卡住......不过,我想我已经理解了你的代码,并试图按照你在编辑中看到的方式来实现。但仍然没有成功。日Thnx。 –

0

只需简单地追加一个首标;

let headers = new Headers(); 
headers.append('Authorization', 'Basic' + btoa('username' + ":" + 'password')); 
this.http.get(url, { headers: headers }); 
0

随着你的RequestOptions添加下面的参数

withCredentials: true