2017-07-12 8 views
0

私のスキルのためにnode.jsラムダ関数を書いており、httpリクエストコールからの戻りデータに問題があります。このリクエストの私のエンドポイントは、JSONファイルを返すSAPのhanaアプリケーションです。私はこれを個別にテストして、私が持っていたいくつかの認証問題を修正しました。私は最終的にこれが別々に機能することを確認しましたAmazon Alexa 302ステータスコード、HTTPリクエストコールの空のJSONオブジェクト

さて、私は次のようHTTPGET機能があります。

function httpGet(query, callback) { 

console.log("/n QUERY: "+ query); 

//var path = '/LocationInformation_2/getLocationInformation_2.xsjs?location='; 
//var url = 'https://' + host + path + query; 

var options = { 
    //http://api.nytimes.com/svc/search/v2/articlesearch.json?q=seattle&sort=newest&api-key= 
    host: host, 
    path: '/LocationInformation_2/getLocationInformation_2.xsjs?location=' + query, 
    method: 'GET', 
    //headers: { 'Content-Type': 'application/json' } 
    json: true 
}; 

var req = http.request(options, (res) => { 

    var body = ''; 
    console.log('status code: ' + res.statusCode); 

    res.on('data', (d) => { 
     body += d; 
    }); 

    res.on('end', function() { 
     console.log('body: ' + body); 
     callback(body); 
    }); 

}); 

req.end(); 

req.on('error', (e) => { 
    console.error(e); 
}); 

}

そして、それを呼び出して、この機能:今

'getNewsIntent': function() { 


    httpGet(location, function(response) { 

     var output = response['change']; 


     var cardTitle = location; 
     var cardContent = output; 

     alexa.emit(':tellWithCard', output, cardTitle, cardContent); 
     // alexa.emit(':tell', 'Hi'); 
    }); 

}, 

問題を、私が呼んでいつでもということであり、このgetNewsIntent()は、出力には全くテキストがありません。 @craig_hで提案されているように、私はCloudWatchを見て、多少の情報を得るかもしれません。そして私は次のメッセージを受け取ります。

getNews中のSO

enter image description here

()私はライン 'はconsole.log(' 体 '+体)' を持っています。私はここにこの体を見ない。私はまた、302ステータスコードを取得します。これはどういう意味ですか?

答えて

0

答えは、単にHTTPリダイレクトを処理することでした。そこで、http.request(options、function(res){})を使う代わりに、ここにあるNode jsリクエストモジュールをダウンロードしました。 https://www.npmjs.com/package/request

リダイレクトイベントを処理します。 「リダイレクトイベント」とは、httpエンドポイントが「http」と「https」の両方で動作するようなもので、そのようなものはほとんどありません。

だから私の機能は非常にのように見えることになった:ここから

How do you follow an HTTP Redirect in Node.js?

とサポート:

このスタックオーバーフローの宝石に

function Request(query, callback) { 

var url = 'https://' + host + path + query; 


request(url, function(error, response, body) { 

    console.log('error: ', error); 
    console.log('statusCode: ', response && response.statusCode); 
    console.log('body: ', body); 
    callback(body); 

}); 

}

クレジットhttps://people.sap.com/thomas.jung

関連する問題