Domanda

Abbiamo un flash developer che usa chiama un file chiamato proxy.php con la querystring url =? "Http: // FeedBurner / qualunque cosa" per accedere ai dati esterni da feed RSS da domini che non per difetto accessibili dal codice swf. per esempio ho potuto avere il seguente nel browser: http: //localhost/proxy.php ? url = feedburner.com / a_feed e il browser visualizzerà la pagina come se avessi messo l'URL feedburner direttamente nella barra degli indirizzi del browser. Il codice PHP in questo file proxy.php è al di sotto.

$header[] = "Content-type: text/xml";
$header[] = "Content-length: ".strlen($post_data);

$ch = curl_init( $_GET['url'] ); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

if ( strlen($post_data)>0 ){
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}

$response = curl_exec($ch);     

if (curl_errno($ch)) {
    print curl_error($ch);
} else {
    curl_close($ch);
    //$response=split("iso-8859-2",$response);
    //$response=join("UTF-8",$response);
    print $response;
}

Funziona bene, ma a causa delle limitazioni di hosting abbiamo bisogno di replicare la funzionalità in asp.net. Non so PHP e nonostante gli sforzi per capire il codice che sto fallendo miseramente. Ho bisogno di essere in grado il duplicare la funzionalità che ho descritto nel primo paragrafo con asp.net ma nonostante googling e cercando una tecnica con XmlTextWriter all'interno di un file ashx ho fallito. Che cosa mi manca qui?

sto cercando di indovinare un response.redirect non avrebbe funzionato come ci dice la fonte di andare al dominio esterno in sé e noi vogliamo evitarlo.

Come potrei ottenere questa funzionalità codice PHP in ASP.NET?

È stato utile?

Soluzione

Tutto ciò che sta facendo è invocare CURL che è un client HTTP (tra le altre cose) per scaricare il file in streaming poi fuori sopra la risposta. È possibile replicare la funzionalità chiamando HttpWebRequest. C'è un tutorial qui:

http://support.microsoft.com/kb/303436

Altri suggerimenti

Nel caso in cui qualcuno volesse un frammento di codice, basato su quel link che ho scritto il codice qui sotto e lo fa solo il trucco (ovviamente è difficile codificato in questo momento, ma hey ...):

protected void Page_Load(object sender, EventArgs e)
{
    string URL = "http://feeds2.feedburner.com/the-foreigner";
    HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(URL);
    HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();

    //Read the raw HTML from the request
    StreamReader sr = new StreamReader(HttpWResponse.GetResponseStream(), Encoding.ASCII);
    //Convert the stream to a string
    string s = sr.ReadToEnd();
    sr.Close();
    Response.Write(s); 
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top