Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取XML的PHP代理:URL参数有问题_Php_Xml_Flash_Proxy_Arguments - Fatal编程技术网

获取XML的PHP代理: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

所以我需要从公共API检索XML,但我的应用程序是Flash,公共服务不会实现crossdomain.XML文件。我在网上(下面)找到了这个PHP脚本,用于代理请求URL。它适用于以下URL:

但脚本似乎会删除或忽略URL上的任何参数,如:

我很无知。有没有一种简单的方法让这个脚本处理这些URL参数?非常感谢。以下是脚本:

<?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'];