2013-01-15 2 views
0

J'ai une fonction php + curl qui capture les réponses "HTTP 301". La page est nommé get_header.php et se trouve dans le dossier/exe:Appel d'une fonction PHP + CURL à partir d'une page ASP classique

function getheader($url) 
// Use curl to fetch the HTTP Headers 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_HEADER, 1); // just the header 
curl_setopt($ch, CURLOPT_NOBODY, 1); // not the body 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
preg_match('/Location: (.*)\n/', $output, $matches); 
// if no redirect header then return the original url 
return isset($matches[1]) ? $matches[1] : $url; 
} 
echo(getheader($_GET['url'])); 

Cependant, je dois utiliser ce script dans une page asp classique. J'ai essayé de l'appeler via HTTP:

Dim x: Set x = CreateObject("MSXML2.ServerXMLHTTP")  
Dim y: y = "http://mysite.com/exe/get_header.php?url=" & url 
x.Open "GET", y, false 
x.Send() 
Dim z: z = x.ResponseText 

Bien qu'il fonctionne, ce n'est pas la solution idéale car les deux pages sont sur le même domaine. En fait, cela a généré une lenteur des demandes. Alors, comment pourrais-je résoudre ce problème? La solution idéale serait une version vbscript ou javascript de ma fonction PHP. Merci!

+1

Pourquoi avez-vous besoin d'appeler PHP du tout? 'x.getResponseHeader (" location ")' ou quelque chose comme ça devrait être disponible pour MSXML2.ServerXMLHTTP –

+0

Merci pour votre réponse, mais avec la fonction PHP, j'obtiens la destination de la valeur $ _GET ['url']. Comment ferais-je cela en utilisant votre suggestion? – afazolo

+0

J'ai vérifié qu'il n'y a pas d'en-tête "location" pour MSXML2.ServerXMLHTTP ou MSXML2.ServerXMLHTTP.6.0. ou Microsoft.XMLHTTP. – afazolo

Répondre

1

est ici la solution:

Dim x: Set x = CreateObject("WinHttp.WinHttpRequest.5.1") 
x.Option(6) = False 
x.Open "GET", url, false 
x.Send() 
If x.status = 301 Then 
Dim z: z = x.getResponseHeader("Location") 
End If 

Merci à Fangel pour vos réponses!

Questions connexes