HTTPリクエストまたはnodejsを使用したlibを使用して、(外部URLの)最初のリクエストのセッションを楽しんでいる2番目のリクエストをどのように行うのだろうか。以下は、PHPとcURLで問題を解決した方法です。メインURLにアクセスし、セッション(Cookie)を取得して2番目のリクエストを作成します
$app->get('/parada/:termo', function ($termo) use ($app) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://olhovivo.sptrans.com.br/');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
curl_setopt($ch, CURLOPT_URL, 'http://olhovivo.sptrans.com.br/v0/Parada/Buscar?termosBusca='.$termo);
$content = curl_exec ($ch);
echo $content;
curl_close ($ch);
});
私が見た http.get のすべての例が要求を作成し、接続を閉じるため、コードはありません。
var http = require('http');
var options = {
host: 'example.com',
port: 80,
path: '/foo.html'
};
http.get(options, function(resp){
resp.on('data', function(chunk){
//new request??
});
}).on("error", function(e){
console.log("Got error: " + e.message);
});
2 番目の URL を認証できるようにするには、最初の URL の Cookie を取得する必要があるため、http.get 経由でナビゲートする必要があります。PHP を使用した cURL は単純です。最初の接続を閉じて 2 番目のリクエストを行う必要がないからです (Cookie を保持します)。
最初のリクエストでクッキーをキャッチしようとしましたが、2番目のリクエストで最初のリクエストにクッキーを挿入しようとしましたが、実行されませんでした
var http = require('http');
var options = {
host: 'www.olhovivo.sptrans.com.br',
port: 80
};
http.get(options, function(resp){
var teste = resp.headers;
teste = teste['set-cookie'][0].split('=');
var cok = 'apiCredentials-v0='+teste[1].replace('; path', '');
resp.on('data', function(chunk){
//new request??
var options2 = {
host: 'www.olhovivo.sptrans.com.br',
port: 80,
"set-cookie": cok,
path: '/v0/Parada/Buscar?termosBusca=Paulista'
};
http.get(options2, function(resp2){
resp2.on('data', function(chunk2){
//new request??
http.createServer(function (req, res) {
//set content header
res.writeHead(200, {
'content-type': 'application/json'
});
//write msg
res.end(chunk2);
}).listen(8080);
console.log('Server running 0n 8080');
});
}).on("error", function(e){
console.log("Got error: " + e.message);
});
});
}).on("error", function(e){
console.log("Got error: " + e.message);
});