我们有一个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代码功能?
答案 0 :(得分:2)
他所做的只是调用CURL,这是一个HTTP客户端(除其他外),下载文件然后通过响应流出来。您可以通过调用HTTPWebRequest来复制该功能。这里有一个教程:
答案 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);
}