3

クエリ文字列 ?url="http://feedburner/whatever" を使用して proxy.php というファイルを呼び出して、デフォルトでは swf コードからアクセスできないドメインからの RSS フィードから外部データにアクセスする Flash 開発者がいます。たとえば、ブラウザに次のように記述できます: http://localhost/proxy.php?url=feedburner.com/a_feedと、ブラウザは、feedburner の URL をブラウザのアドレス バーに直接入力したかのようにページを表示します。 . この proxy.php ファイルの PHP コードは次のとおりです。

$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;
}

正常に動作しますが、ホスティングの制限により、asp.net で機能を複製する必要があります。私は PHP を知りません。コードを理解するための努力にもかかわらず、惨めなほど失敗しています。最初の段落で説明した機能をasp.netで複製できるようにする必要がありますが、グーグルで調べて、ashxファイル内のXmlTextWriterでテクニックを試してみましたが、失敗しました。ここで何が欠けていますか?

ソースに外部ドメイン自体に移動するように指示するため、response.redirect は機能しないと思いますが、それを避けたいと考えています。

ASP.NET でこの PHP コード機能を実現するにはどうすればよいですか?

4

2 に答える 2

2

彼がしているのは、(とりわけ)HTTPクライアントであるCURLを呼び出してファイルをダウンロードし、応答を介してストリーミングすることだけです。HTTPWebRequestを呼び出すことにより、機能を複製できます。ここにチュートリアルがあります:

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

于 2010-02-22T19:22:35.410 に答える
1

誰かがコード スニペットを希望する場合に備えて、そのリンクに基づいて以下のコードを作成しました。

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); 
}
于 2010-02-22T20:08:48.360 に答える