ASP.NET相当于这个PHP代码?

时间:2010-02-22 19:14:27

标签: php asp.net httpresponse

我们有一个Flash开发人员,他使用一个名为proxy.php的文件调用查询字符串?url =“http:// feedburner / whatever”来访问来自域的rss源的外部数据,这些域默认情况下不能从swf代码访问。例如,我可以在浏览器中使用以下内容: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描述的功能,但是尽管谷歌搜索并尝试使用XmlTextWriter在ashx文件中的技术我失败了。我在这里错过了什么?

我猜测response.redirect不起作用,因为它告诉源代码转到外部域本身,我们想避免这种情况。

如何在ASP.NET中实现此PHP代码功能?

2 个答案:

答案 0 :(得分:2)

他所做的只是调用CURL,这是一个HTTP客户端(除其他外),下载文件然后通过响应流出来。您可以通过调用HTTPWebRequest来复制该功能。这里有一个教程:

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

答案 1 :(得分: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); 
}