angular2调用http.get请求打开文件

时间:2016-07-28 14:12:53

标签: angular

我正在尝试执行http.get请求以从本地目录获取文件,此时我只想在console.log中获取请求api的响应。 getFile()显示console.log,但调用http,不确定在angular2中如何使用http;我知道在angular1中它使用.then作为响应。

import { Http, HTTP_PROVIDERS } from '@angular/http';

getFile() {
  this.http.get('//localhost:1337/getFile');
  console.log('get me the file');
}

Api终点:

app.get('/getFile', function(req, res) {
  var contents = fs.readFileSync('journey.xml');
  console.log('Reading File....' + contents);   
  res.send(contents);
});

4 个答案:

答案 0 :(得分:1)

请注意,您需要将文件的请求类型更改为blob,假设您不是简单地获取纯文本文件。

之类的东西
this.http.get(url,{responseType: 'blob'}).subscribe(...)

否则,您将收到错误,因为角度尝试将响应解析为json。还有其他类型,您可以阅读here

对于您的情况,我认为responseType将是' text'

答案 1 :(得分:0)

您需要订阅http服务返回的observable:

import { Http, HTTP_PROVIDERS } from '@angular/http';
import 'rxjs/add/operator/map';

getFile() {
  this.http.get('//localhost:1337/getFile')
    .map(response => response.text())
    .subscribe(data => console.log('get me the file', data))
}

答案 2 :(得分:0)

尝试使用subscribe

.subscribe(
    res => this.somename= res.json(),
    error =>  console.log(error));

OR

.subscribe(
  function(response) { console.log("Success Response" + response)},
  function(error) { console.log("Error happened" + error)},
  function() { console.log("the subscription is completed")}
 );

答案 3 :(得分:0)

http.get方法返回HTTP响应的Observable 你可能想尝试这样的事情:

'lstDevices.OfType(Of Printer).First().iAge = 10
'Console.WriteLine(lstDevices.OfType(Of Printer).First().iAge)

Printer.iAge = 10
Console.WriteLine(Printer.iAge)