2017-01-10 7 views
1

getリクエストからどのように応答ヘッダーにアクセスできますか?.then関数の応答ヘッダーにアクセスするにはどうすればいいですかAngularJS

私は約束を返すサービス機能を持っています。私のコントローラは、私が応答ヘッダーからコンテンツの種類が必要です機能を約束を解決します。

私はconsole.log(ヘッダー())で表示される "ヘッダー"パラメーターを使用しようとしましたが、エラー "ヘッダー()はコンソールに表示されていません"。

マイサービス:

.factory('GetResultFile', 
['$http', '$q', 
function ($http, $q) { 

    var service = {}; 
    service.getResult = function(id, rid) { 

     var deferred = $q.defer(); 

     $http 
     .get('http://localhost:9999/v1/jmeter/' + id + '/results/' + rid, {cache: false}) 
     .then(function(data, status, headers, config) { 
      if(data.status == 200) { 
       console.log(data.status); 
       deferred.resolve(data); 
      } 
      else { 
       deferred.reject(data); 
      } 
     }); 
     return deferred.promise;     
    } 
    return service; 

}])。

コントローラ:

$scope.getResult = function(rid) { 
     console.log($scope.id); 
     GetResultFile.getResult($scope.id, rid) 
     .then(function(data, headers) { 
      //console.log(headers.Content-type); 
      console.log(headers()); 
      console.log(data); 
      console.log("Download succeed"); 
      console.log(data.status); 

      var file = new Blob([data.data], {type: 'text/plain;charset=utf-8'}); 
      FileSaver.saveAs(file, 'test.txt'); 

     }, function (data) { 
      console.log("Download ERROR!"); 
      console.log(data.status); 
     }) 
    };    

}])

+0

あなたはあなたのサービスのコードを追加してくださいでした。 –

+2

[anglejsでレスポンスヘッダーを読む方法]の複製がありますか?(http://stackoverflow.com/questions/28805589/how-to-read-response-headers-in-angularjs) –

+0

私の回答を更新しました。 @MoshFeuああ、私は私の答えをチェックし、それはあなたを – Kai

答えて

3

いくつかのより多くの情報がなければ、私は唯一の角度サービスとレスポンス

に一般

this.$http.get('/your/Route') 
     .then(response => { 
     console.log(response) // Full information 
     console.log(response.data) // holds your Data 
     console.log(response.config) // holds more Specific information like the Url and more 
     console.log(response.headers());// Specific headers Information 
     console.log(response.headers(["content-type"]));//gets the Content-Type of Header 

}); 

のような標準的なものを考えることができます

レスポンスオブジェクトにはこれらのプロパティ:

  • データから{string|Object} - 変換関数を用いて形質転換レスポンスボディ。

  • ステータス- {number} - 応答のHTTPステータスコード。

  • ヘッダー - {function([headerName])} - ヘッダーゲッター機能。

  • コンフィグ - {Object} - 要求を生成するために使用された構成オブジェクト。

  • statusText - {string} - レスポンスのHTTPステータステキスト。

https://docs.angularjs.org/api/ng/service/ $ HTTP

+0

満たしていれば、それをしてください受け入れる@kaiポスト – Kai

+0

@Kaiええ、 'console.log(response.headers([" content-type "]));'を実行してください。その解決策を使用して私の回答を編集しますか? – AkAk47

+0

ありがとう、私はconsole.log(response.header( 'content-type'))で試してみました。 うまく動作します! – Kai

関連する問題