我正在尝试构建一个连接到twitter API的应用程序。为此,我需要使用Angular2发送带有一组头的http get请求。
注意,下面的curl请求是成功的(假设有正确的密钥)。
这是我尝试的,唯一的问题是,通过以下实现,我无法传递必要的标题。
想知道是否有人遇到过此问题,并对如何解决有任何建议?
提前致谢
constructor(private _http: Http) {
}
getTwitterResponse() {
return this._http.get('https://api.twitter.com/1.1/statuses/home_timeline.json')
.map(res => res.text);
}
带有标题的卷曲请求样本(已删除授权密钥)
curl --get 'https://api.twitter.com/1.1/statuses/home_timeline.json' --header 'Authorization: OAuth oauth_consumer_key="123456", oauth_nonce="123456", oauth_signature="f%123456%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1475158916", oauth_token="123456", oauth_version="1.0"' --verbose
答案 0 :(得分:2)
您可以像这样在请求中添加标题:
import { Headers, RequestOptions } from '@angular/http';
getTwitterResponse() {
let headers = new Headers({ "Content-Type": "application/json" });
let options = new RequestOptions({ headers: headers });
let url = 'https://api.twitter.com/1.1/statuses/home_timeline.json';
return this._http.get(url, options).map(res => res.text);
}
对此处发生的事情的说明:get
的请求Http
具有以下签名:
get(url: string, options?: RequestOptionsArgs)
第二个参数是可选的,它的类型是RequestOptionsArgs
,它是用于构造RequestOptions
的接口,这意味着您可以将RequestOptions
传递给get
as第二个论点。 RequestOptionsArgs
是具有以下属性的接口:
export interface RequestOptionsArgs {
url?: string;
method?: string | RequestMethod;
search?: string | URLSearchParams;
headers?: Headers;
body?: any;
withCredentials?: boolean;
responseType?: ResponseContentType;
}
所有属性都是可选的,这就是我们只能将headers
传递给options
的原因。您可以使用任何内容更改Content-Type
,并且可以添加多个标题:
headers: Headers = new Headers({
'First header': 'First value',
'Second header': 'Second value',
'Third header': 'Third value',
'Fourth header': 'Fourth value'
});
您可以在以下链接中详细了解我刚刚提到的所有内容: