我可以在浏览器中查看项目如果我在浏览器中使用它。我在下面的服务中使用相同的URL,并且没有响应,如果我用exp的一些全局api url更改url:“https://api.spotify.com/v1/search?type=artist&q=”它按预期工作。所以实际服务也有效。
这意味着我关于sharepoint list api的问题,它需要一些特定的参数,但是无法弄清楚我在浏览器中做了什么但是在该服务的http请求中没有。
api.service:
import {Http} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Injectable} from '@angular/core';
@Injectable()
export class dService {
constructor(private http_: Http){}
getAnnouncements(urllapi){
return this.http_.get(urllapi).map(res=>res.json());
}
}
-
//this.someService.getAnnouncements("https://api.spotify.com/v1/search?type=artist&q=") it works as I expected
this.someService.getAnnouncements("http://milespoint1:33333/_api/web/lists/getByTitle('Announcement5Jan')/items").subscribe((res) => {
debugger
this.tweetsdata = res.json().data.statuses;
this.isLoading=false;
console.log("spotify service data:"+res)});
答案 0 :(得分:0)
如果您没有要求严格JSON
数据,SharePoint REST API将为您提供XML数据(与您的浏览器相同的数据),从而使您的
this.tweetsdata = res.json()
行失败。尝试将服务构造函数和方法更改为
import {Http, Response, Headers} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Injectable} from '@angular/core';
@Injectable()
export class dService {
private headers: Headers;
constructor(private http_: Http){
this.headers = new Headers();
this.headers.append('Content-Type', 'application/json');
this.headers.append('Accept', 'application/json;odata=verbose');
}
getAnnouncements(urllapi){
return this.http_.get(urllapi, {headers: this.headers}).map(res=>res.json());
}
}
如果有帮助,请告诉我。