Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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
Php 对API的XML查询返回';文件过早结束';_Php_Xml_Parsing - Fatal编程技术网

Php 对API的XML查询返回';文件过早结束';

Php 对API的XML查询返回';文件过早结束';,php,xml,parsing,Php,Xml,Parsing,我试图调用一个外部站点(API),它将返回一个XML响应。我尝试了几种方法,但最终得到了相同的响应:文件过早结束。不幸的是,我无法从其他网站获得任何积极的反馈。下面是我尝试过的php命令及其结果。在我看来,在另一个网站上有一个问题。我可以复制URL并粘贴到浏览器中,效果很好 $url = "https://cli-cert.emdeon.com/servlet/XMLServlet?request=<?xml version='1.0'?>"; $url .= "<REQUES

我试图调用一个外部站点(API),它将返回一个XML响应。我尝试了几种方法,但最终得到了相同的响应:
文件过早结束
。不幸的是,我无法从其他网站获得任何积极的反馈。下面是我尝试过的php命令及其结果。在我看来,在另一个网站上有一个问题。我可以复制URL并粘贴到浏览器中,效果很好

$url = "https://cli-cert.emdeon.com/servlet/XMLServlet?request=<?xml version='1.0'?>";
$url .= "<REQUEST userid='p_panda1' password='practice00' facility='3003154010'>";
$url .= "<OBJECT name='clinicalreport' op='search_filedelivery'>";
$url .= "<receivingorganization>3003154010</receivingorganization>";
$url .= "<creation_datetime_from>09/01/2014</creation_datetime_from>"; 
$url .= "<creation_datetime_to>10/10/2014</creation_datetime_to>";
$url .= "<is_downloaded>n</is_downloaded></OBJECT></REQUEST>";


$myXML = simplexml_load_file($url);
echo "<pre>";
print_r($myXML);

$postdata = file_get_contents($url);
echo "<pre>";
print_r($postdata);


$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo "<pre>";
echo $response,"<br>";

您正在创建的URL无效

您正在创建一个URL,如:

https://cli-cert.emdeon.com/servlet/XMLServlet?request=...
这意味着你有两个问号。例如,据我所知,<不是有效的url字符

因此,您必须对其进行url编码,如:

$request='…等;
$url=”https://cli-cert.emdeon.com/servlet/XMLServlet?request=". urlencode($请求);

您需要
urlencode
参数。查看以了解更多信息。将其更改为此后,所有3个都会返回一个响应

$url=”https://cli-cert.emdeon.com/servlet/XMLServlet?request=";
$xml=”“;
$xml.=“”;
$xml.=“”;
$xml.=“3003154010”;
$xml.=“09/01/2014”;
$xml.=“2014年10月10日”;
$xml.=“n”;
$url=$url。urlencode($xml);

这是有效的。需要将url_encode更改为urlencode。
SimpleXMLElement Object
(
    [0] => Premature end of file.
)
Premature end of file.
Premature end of file.
https://cli-cert.emdeon.com/servlet/XMLServlet?request=<?xml version='1.0'?>...
$request = '<?xml version='1.0'?>...etc...';
$url = "https://cli-cert.emdeon.com/servlet/XMLServlet?request=". urlencode($request);
$url = "https://cli-cert.emdeon.com/servlet/XMLServlet?request=";
$xml = "<?xml version='1.0'?>";
$xml .= "<REQUEST userid='p_panda1' password='practice00' facility='3003154010'>";
$xml .= "<OBJECT name='clinicalreport' op='search_filedelivery'>";
$xml .= "<receivingorganization>3003154010</receivingorganization>";
$xml .= "<creation_datetime_from>09/01/2014</creation_datetime_from>"; 
$xml .= "<creation_datetime_to>10/10/2014</creation_datetime_to>";
$xml .= "<is_downloaded>n</is_downloaded></OBJECT></REQUEST>";

$url = $url . urlencode($xml);