获取XML的PHP代理:URL参数有问题
所以我需要从公共API检索XML,但我的应用程序是Flash,公共服务不会实现crossdomain.XML文件。我在网上(下面)找到了这个PHP脚本,用于代理请求URL。它适用于以下URL: 但脚本似乎会删除或忽略URL上的任何参数,如: 我很无知。有没有一种简单的方法让这个脚本处理这些URL参数?非常感谢。以下是脚本:获取XML的PHP代理:URL参数有问题,php,xml,flash,proxy,arguments,Php,Xml,Flash,Proxy,Arguments,所以我需要从公共API检索XML,但我的应用程序是Flash,公共服务不会实现crossdomain.XML文件。我在网上(下面)找到了这个PHP脚本,用于代理请求URL。它适用于以下URL: 但脚本似乎会删除或忽略URL上的任何参数,如: 我很无知。有没有一种简单的方法让这个脚本处理这些URL参数?非常感谢。以下是脚本: <?php $post_data = $HTTP_RAW_POST_DATA; $header[] = "Content-type: text/xml"; $h
<?php
$post_data = $HTTP_RAW_POST_DATA;
$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_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
$response = curl_exec($ch);
$response_headers = curl_getinfo($ch);
if (curl_errno($ch)) {
print curl_error($ch);
} else {
curl_close($ch);
header( 'Content-type: ' . $response_headers['content-type']);
print $response;
}
?>
0){
卷曲设置($ch,卷曲设置桩,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
}
$response=curl\u exec($ch);
$response\u headers=curl\u getinfo($ch);
if(旋度误差($ch)){
打印卷曲错误($ch);
}否则{
卷曲关闭($ch);
标题('Content-type:'.$response_headers['Content-type']);
打印$response;
}
?>
如果您想让该URL作为URL参数毫发无伤地进入脚本,您必须首先在Flash端访问它。例如,用于访问示例脚本的正确URL实际上是:
http://mysite.com/xml_proxy.php?url=http%3A%2F%2Fpublicapiserver.com%3Fapp_ID%3D35235x%26app_key%3D84x
否则,您的web服务器和PHP将非常困惑,您的URL的哪一位是代理服务的URL,哪一位是您想要从中获取数据的URL
闪存端的解决方案可能取决于您目前如何拨打电话。但是Actionscript有一个函数可以为您进行编码。您只想对发送到代理的URL进行编码,而不是对代理本身的URL进行编码,因此保留代理URL的原样(“http://mysite.com/xml_proxy.php?url=),然后在末尾抛出要从中获取数据的站点的escape()'d URL
您不需要从PHP端执行任何操作,因为PHP会自动对其$\u GET变量中的参数进行url解码,这就是您在PHP代码中获取该url的方式。如果需要代理soap客户端,请添加以下行:
$header[] = "SOAPAction: ".$_SERVER['HTTP_SOAPACTION'];