我正在尝试使用instagram api来获取一些照片。不幸的是,它似乎有点难以应付其CORS问题。所以我决定用Jsonp.get
通过它。
这是我的服务:
import {Http,Headers} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {Injectable} from '@angular/core';
import {Gallery} from './gallery';
import {Jsonp} from '@angular/http';
@Injectable()
export class InstagramService{
constructor( private _http:Http,private _jsonp: Jsonp ){
}
getGallery(username: string) : Observable<Gallery> {
return this._jsonp.get("https://www.instagram.com/justinbieber/media/" ).map(res => res.json());
}
}
问题是,当我运行我的代码时,我面对错误:
EXCEPTION: Response with status: 200 Ok for URL: https://www.instagram.com/justinbieber/media/
这个错误是什么?我怎样才能修好它?
:我正在使用url:
https://www.instagram.com/justinbieber/media/
它不需要身份验证,您可以在浏览器或邮差中尝试。我只对Get
请求感兴趣,所以我不需要post
等。
您的jsonp
实现看起来很好。你缺少的是将它们列为providers
类似于HTTP_PROVIDERS
,就像这样在你的组件中:
import {JSONP_PROVIDERS, Jsonp} from '@angular/http';
@Component({
//...
providers : [JSONP_PROVIDERS]
});
则可以使用subscribe
来消费observable
您可以尝试以下两种解决方案
- https://www.instagram.com/justinbieber/media/
getResponse () .addHeader("Access-Control-Allow-Origin"、"*");
_jsonp -> http
更改json字符串例子:
旧弦:"{id: 1,名字:32}"
新字符串:" __ng_jsonp__.__req1.finished ( {id: 1,名字:32}) "